home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 June: Reference Library / Dev.CD Jun 96 RL / Dev.CD Jun 96 RL.toast / Technical Documentation / develop / develop Issue 6 / develop Issue 6 code / TCP.sea / TCP / NewsWatcher / NW Source / Source / cache.c < prev    next >
MacBinary  |  1995-02-21  |  23.4 KB  |  [TEXT/MMCC]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
66% dexvert Compact Compressed (Unix) (archive/compact) ext Supported
1% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Tue Feb 21 04:42:54 1995, modified Tue Feb 21 04:42:54 1995, creator 'MMCC', type ASCII, 23241 bytes "cache.c" , at 0x5b49 410 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% dearkID deark: macbinary default
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MMCC]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 07 63 61 63 68 65 2e | 63 00 00 00 00 00 00 00 |..cache.|c.......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 4d 43 | 43 01 00 00 00 00 00 00 |.TEXTMMC|C.......|
|00000050| 00 00 00 00 00 5a c9 00 | 00 01 9a ab 6f 66 1e ab |.....Z..|....of..|
|00000060| 6f 66 1e 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |of......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 40 e1 00 00 |........|....@...|
|00000080| 2f 2a 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/*------|--------|
|00000090| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000000a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000000b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000000c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 0d |--------|------..|
|000000d0| 09 63 61 63 68 65 2e 63 | 0d 0d 09 54 68 69 73 20 |.cache.c|...This |
|000000e0| 6d 6f 64 75 6c 65 20 6d | 61 6e 61 67 65 73 20 74 |module m|anages t|
|000000f0| 68 65 20 61 72 74 69 63 | 6c 65 20 69 6e 66 6f 72 |he artic|le infor|
|00000100| 6d 61 74 69 6f 6e 20 63 | 61 63 68 65 2e 0d 09 0d |mation c|ache....|
|00000110| 09 43 6f 70 79 72 69 67 | 68 74 20 a9 20 31 39 39 |.Copyrig|ht . 199|
|00000120| 34 2d 31 39 39 35 2c 20 | 4e 6f 72 74 68 77 65 73 |4-1995, |Northwes|
|00000130| 74 65 72 6e 20 55 6e 69 | 76 65 72 73 69 74 79 2e |tern Uni|versity.|
|00000140| 0d 0d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |..------|--------|
|00000150| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000160| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000170| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000180| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2a 2f |--------|------*/|
|00000190| 0d 0d 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 72 69 |..#inclu|de <stri|
|000001a0| 6e 67 2e 68 3e 0d 23 69 | 6e 63 6c 75 64 65 20 3c |ng.h>.#i|nclude <|
|000001b0| 73 74 64 69 6f 2e 68 3e | 0d 23 69 6e 63 6c 75 64 |stdio.h>|.#includ|
|000001c0| 65 20 3c 73 74 64 6c 69 | 62 2e 68 3e 0d 0d 23 69 |e <stdli|b.h>..#i|
|000001d0| 6e 63 6c 75 64 65 20 22 | 67 6c 6f 62 2e 68 22 0d |nclude "|glob.h".|
|000001e0| 23 69 6e 63 6c 75 64 65 | 20 22 63 61 63 68 65 2e |#include| "cache.|
|000001f0| 68 22 0d 23 69 6e 63 6c | 75 64 65 20 22 64 69 61 |h".#incl|ude "dia|
|00000200| 6c 6f 67 2e 68 22 0d 23 | 69 6e 63 6c 75 64 65 20 |log.h".#|include |
|00000210| 22 6d 65 6d 75 74 69 6c | 2e 68 22 0d 23 69 6e 63 |"memutil|.h".#inc|
|00000220| 6c 75 64 65 20 22 74 65 | 78 74 2e 68 22 0d 23 69 |lude "te|xt.h".#i|
|00000230| 6e 63 6c 75 64 65 20 22 | 66 69 6c 65 75 74 69 6c |nclude "|fileutil|
|00000240| 2e 68 22 0d 23 69 6e 63 | 6c 75 64 65 20 22 77 69 |.h".#inc|lude "wi|
|00000250| 6e 64 75 74 69 6c 2e 68 | 22 0d 23 69 6e 63 6c 75 |ndutil.h|".#inclu|
|00000260| 64 65 20 22 72 65 73 75 | 74 69 6c 2e 68 22 0d 23 |de "resu|til.h".#|
|00000270| 69 6e 63 6c 75 64 65 20 | 22 69 63 2e 68 22 0d 0d |include |"ic.h"..|
|00000280| 0d 0d 23 64 65 66 69 6e | 65 20 6b 43 61 63 68 65 |..#defin|e kCache|
|00000290| 52 65 73 6f 75 72 63 65 | 54 79 70 65 09 09 27 41 |Resource|Type..'A|
|000002a0| 43 43 48 27 0d 23 64 65 | 66 69 6e 65 20 6b 43 61 |CCH'.#de|fine kCa|
|000002b0| 63 68 65 47 72 6f 75 70 | 41 72 72 61 79 49 44 09 |cheGroup|ArrayID.|
|000002c0| 09 31 32 38 0d 23 64 65 | 66 69 6e 65 20 6b 43 61 |.128.#de|fine kCa|
|000002d0| 63 68 65 41 72 74 69 63 | 6c 65 41 72 72 61 79 49 |cheArtic|leArrayI|
|000002e0| 44 09 31 32 39 0d 23 64 | 65 66 69 6e 65 20 6b 43 |D.129.#d|efine kC|
|000002f0| 61 63 68 65 53 74 72 69 | 6e 67 73 42 6c 6f 63 6b |acheStri|ngsBlock|
|00000300| 49 44 09 31 33 30 0d 0d | 0d 0d 74 79 70 65 64 65 |ID.130..|..typede|
|00000310| 66 20 73 74 72 75 63 74 | 20 54 47 72 6f 75 70 49 |f struct| TGroupI|
|00000320| 6e 66 6f 20 7b 0d 09 6c | 6f 6e 67 20 6f 66 66 73 |nfo {..l|ong offs|
|00000330| 65 74 3b 09 09 09 09 2f | 2a 20 6f 66 66 73 65 74 |et;..../|* offset|
|00000340| 20 69 6e 20 73 74 72 69 | 6e 67 73 20 62 6c 6f 63 | in stri|ngs bloc|
|00000350| 6b 20 6f 66 20 67 72 6f | 75 70 20 6e 61 6d 65 20 |k of gro|up name |
|00000360| 2a 2f 0d 09 6c 6f 6e 67 | 20 6e 75 6d 43 61 63 68 |*/..long| numCach|
|00000370| 65 64 3b 09 09 09 09 2f | 2a 20 6e 75 6d 62 65 72 |ed;..../|* number|
|00000380| 20 6f 66 20 63 61 63 68 | 65 64 20 61 72 74 69 63 | of cach|ed artic|
|00000390| 6c 65 73 20 69 6e 20 74 | 68 69 73 20 67 72 6f 75 |les in t|his grou|
|000003a0| 70 20 2a 2f 0d 7d 20 54 | 47 72 6f 75 70 49 6e 66 |p */.} T|GroupInf|
|000003b0| 6f 3b 0d 0d 74 79 70 65 | 64 65 66 20 73 74 72 75 |o;..type|def stru|
|000003c0| 63 74 20 54 41 72 74 69 | 63 6c 65 49 6e 66 6f 20 |ct TArti|cleInfo |
|000003d0| 7b 0d 09 6c 6f 6e 67 20 | 67 72 6f 75 70 49 6e 64 |{..long |groupInd|
|000003e0| 65 78 3b 09 09 09 2f 2a | 20 69 6e 64 65 78 20 69 |ex;.../*| index i|
|000003f0| 6e 20 67 72 6f 75 70 20 | 69 6e 66 6f 20 61 72 72 |n group |info arr|
|00000400| 61 79 2c 20 6f 72 20 2d | 31 20 69 66 20 65 6e 74 |ay, or -|1 if ent|
|00000410| 72 79 20 6e 6f 74 20 75 | 73 65 64 20 2a 2f 0d 09 |ry not u|sed */..|
|00000420| 6c 6f 6e 67 20 6e 75 6d | 62 65 72 3b 09 09 09 09 |long num|ber;....|
|00000430| 2f 2a 20 61 72 74 69 63 | 6c 65 20 6e 75 6d 62 65 |/* artic|le numbe|
|00000440| 72 20 2a 2f 0d 09 6c 6f | 6e 67 20 73 75 62 6a 65 |r */..lo|ng subje|
|00000450| 63 74 4f 66 66 73 65 74 | 3b 09 09 09 2f 2a 20 6f |ctOffset|;.../* o|
|00000460| 66 66 73 65 74 20 69 6e | 20 73 74 72 69 6e 67 73 |ffset in| strings|
|00000470| 20 62 6c 6f 63 6b 20 6f | 66 20 73 75 62 6a 65 63 | block o|f subjec|
|00000480| 74 20 73 74 72 69 6e 67 | 20 2a 2f 0d 09 6c 6f 6e |t string| */..lon|
|00000490| 67 20 61 75 74 68 6f 72 | 4f 66 66 73 65 74 3b 09 |g author|Offset;.|
|000004a0| 09 09 2f 2a 20 6f 66 66 | 73 65 74 20 69 6e 20 73 |../* off|set in s|
|000004b0| 74 72 69 6e 67 73 20 62 | 6c 6f 63 6b 20 6f 66 20 |trings b|lock of |
|000004c0| 61 75 74 68 6f 72 20 73 | 74 72 69 6e 67 20 2a 2f |author s|tring */|
|000004d0| 0d 09 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 20 |..unsign|ed long |
|000004e0| 63 72 65 61 74 69 6f 6e | 44 61 74 65 54 69 6d 65 |creation|DateTime|
|000004f0| 3b 09 2f 2a 20 64 61 74 | 65 2f 74 69 6d 65 20 63 |;./* dat|e/time c|
|00000500| 61 63 68 65 20 65 6e 74 | 72 79 20 77 61 73 20 63 |ache ent|ry was c|
|00000510| 72 65 61 74 65 64 20 2a | 2f 0d 7d 20 54 41 72 74 |reated *|/.} TArt|
|00000520| 69 63 6c 65 49 6e 66 6f | 3b 0d 0d 0d 73 74 61 74 |icleInfo|;...stat|
|00000530| 69 63 20 42 6f 6f 6c 65 | 61 6e 20 67 43 61 63 68 |ic Boole|an gCach|
|00000540| 65 44 69 72 74 79 20 3d | 20 66 61 6c 73 65 3b 09 |eDirty =| false;.|
|00000550| 09 09 2f 2a 20 74 72 75 | 65 20 69 66 20 63 61 63 |../* tru|e if cac|
|00000560| 68 65 20 63 68 61 6e 67 | 65 64 20 73 69 6e 63 65 |he chang|ed since|
|00000570| 20 72 65 61 64 20 66 72 | 6f 6d 20 70 72 65 66 73 | read fr|om prefs|
|00000580| 20 66 69 6c 65 20 2a 2f | 0d 73 74 61 74 69 63 20 | file */|.static |
|00000590| 54 47 72 6f 75 70 49 6e | 66 6f 20 2a 2a 67 47 72 |TGroupIn|fo **gGr|
|000005a0| 6f 75 70 49 6e 66 6f 20 | 3d 20 6e 69 6c 3b 09 09 |oupInfo |= nil;..|
|000005b0| 2f 2a 20 68 61 6e 64 6c | 65 20 74 6f 20 61 72 72 |/* handl|e to arr|
|000005c0| 61 79 20 6f 66 20 67 72 | 6f 75 70 20 69 6e 66 6f |ay of gr|oup info|
|000005d0| 20 2a 2f 0d 73 74 61 74 | 69 63 20 6c 6f 6e 67 20 | */.stat|ic long |
|000005e0| 67 4e 75 6d 47 72 6f 75 | 70 49 6e 66 6f 20 3d 20 |gNumGrou|pInfo = |
|000005f0| 30 3b 09 09 09 09 2f 2a | 20 6e 75 6d 62 65 72 20 |0;..../*| number |
|00000600| 6f 66 20 65 6c 65 6d 65 | 6e 74 73 20 69 6e 20 67 |of eleme|nts in g|
|00000610| 72 6f 75 70 20 69 6e 66 | 6f 20 61 72 72 61 79 20 |roup inf|o array |
|00000620| 2a 2f 0d 73 74 61 74 69 | 63 20 54 41 72 74 69 63 |*/.stati|c TArtic|
|00000630| 6c 65 49 6e 66 6f 20 2a | 2a 67 41 72 74 69 63 6c |leInfo *|*gArticl|
|00000640| 65 49 6e 66 6f 20 3d 20 | 6e 69 6c 3b 09 2f 2a 20 |eInfo = |nil;./* |
|00000650| 68 61 6e 64 6c 65 20 74 | 6f 20 63 61 63 68 65 64 |handle t|o cached|
|00000660| 20 61 72 74 69 63 6c 65 | 20 69 6e 66 6f 20 2a 2f | article| info */|
|00000670| 0d 73 74 61 74 69 63 20 | 6c 6f 6e 67 20 67 4e 75 |.static |long gNu|
|00000680| 6d 41 72 74 69 63 6c 65 | 49 6e 66 6f 20 3d 20 30 |mArticle|Info = 0|
|00000690| 3b 09 09 09 2f 2a 20 6e | 75 6d 62 65 72 20 6f 66 |;.../* n|umber of|
|000006a0| 20 65 6c 65 6d 65 6e 74 | 73 20 69 6e 20 61 72 74 | element|s in art|
|000006b0| 69 63 6c 65 20 69 6e 66 | 6f 20 61 72 72 61 79 20 |icle inf|o array |
|000006c0| 2a 2f 0d 73 74 61 74 69 | 63 20 48 61 6e 64 6c 65 |*/.stati|c Handle|
|000006d0| 20 67 53 74 72 69 6e 67 | 73 20 3d 20 6e 69 6c 3b | gString|s = nil;|
|000006e0| 09 09 09 09 2f 2a 20 68 | 61 6e 64 6c 65 20 74 6f |..../* h|andle to|
|000006f0| 20 73 74 72 69 6e 67 73 | 20 62 6c 6f 63 6b 20 2a | strings| block *|
|00000700| 2f 0d 73 74 61 74 69 63 | 20 6c 6f 6e 67 20 67 53 |/.static| long gS|
|00000710| 74 72 69 6e 67 73 41 6c | 6c 6f 63 61 74 65 64 20 |tringsAl|located |
|00000720| 3d 20 30 3b 09 09 09 2f | 2a 20 6e 75 6d 62 65 72 |= 0;.../|* number|
|00000730| 20 6f 66 20 62 79 74 65 | 73 20 61 6c 6c 6f 63 61 | of byte|s alloca|
|00000740| 74 65 64 20 69 6e 20 73 | 74 72 69 6e 67 73 20 62 |ted in s|trings b|
|00000750| 6c 6f 63 6b 20 2a 2f 0d | 73 74 61 74 69 63 20 6c |lock */.|static l|
|00000760| 6f 6e 67 20 67 53 74 72 | 69 6e 67 73 55 73 65 64 |ong gStr|ingsUsed|
|00000770| 20 3d 20 30 3b 09 09 09 | 09 2f 2a 20 6e 75 6d 62 | = 0;...|./* numb|
|00000780| 65 72 20 6f 66 20 62 79 | 74 65 73 20 75 73 65 64 |er of by|tes used|
|00000790| 20 69 6e 20 73 74 72 69 | 6e 67 73 20 62 6c 6f 63 | in stri|ngs bloc|
|000007a0| 6b 20 2a 2f 0d 09 0d 0d | 0d 2f 2a 2d 2d 2d 2d 2d |k */....|./*-----|
|000007b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000007c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000007d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000007e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000007f0| 2d 2d 2d 2d 2d 2d 2d 0d | 09 56 61 6c 69 64 43 61 |-------.|.ValidCa|
|00000800| 63 68 65 20 0d 09 0d 09 | 56 61 6c 69 64 61 74 65 |che ....|Validate|
|00000810| 20 74 68 65 20 63 61 63 | 68 65 2e 0d 09 09 09 0d | the cac|he......|
|00000820| 09 45 78 69 74 3a 09 66 | 75 6e 63 74 69 6f 6e 20 |.Exit:.f|unction |
|00000830| 72 65 73 75 6c 74 20 3d | 20 74 72 75 65 20 69 66 |result =| true if|
|00000840| 20 6e 6f 20 65 72 72 6f | 72 2e 0d 2d 2d 2d 2d 2d | no erro|r..-----|
|00000850| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000860| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000870| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000880| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000890| 2d 2d 2d 2d 2d 2d 2d 2a | 2f 0d 0d 73 74 61 74 69 |-------*|/..stati|
|000008a0| 63 20 42 6f 6f 6c 65 61 | 6e 20 56 61 6c 69 64 43 |c Boolea|n ValidC|
|000008b0| 61 63 68 65 20 28 76 6f | 69 64 29 0d 7b 0d 09 6c |ache (vo|id).{..l|
|000008c0| 6f 6e 67 20 69 2c 20 6a | 2c 20 6e 75 6d 43 61 63 |ong i, j|, numCac|
|000008d0| 68 65 64 3b 0d 09 54 41 | 72 74 69 63 6c 65 49 6e |hed;..TA|rticleIn|
|000008e0| 66 6f 20 2a 70 3b 0d 09 | 54 47 72 6f 75 70 49 6e |fo *p;..|TGroupIn|
|000008f0| 66 6f 20 2a 71 3b 0d 09 | 75 6e 73 69 67 6e 65 64 |fo *q;..|unsigned|
|00000900| 20 6c 6f 6e 67 20 6e 6f | 77 44 61 74 65 54 69 6d | long no|wDateTim|
|00000910| 65 50 6c 75 73 32 34 48 | 6f 75 72 73 3b 0d 0d 09 |ePlus24H|ours;...|
|00000920| 47 65 74 44 61 74 65 54 | 69 6d 65 28 26 6e 6f 77 |GetDateT|ime(&now|
|00000930| 44 61 74 65 54 69 6d 65 | 50 6c 75 73 32 34 48 6f |DateTime|Plus24Ho|
|00000940| 75 72 73 29 3b 0d 09 6e | 6f 77 44 61 74 65 54 69 |urs);..n|owDateTi|
|00000950| 6d 65 50 6c 75 73 32 34 | 48 6f 75 72 73 20 2b 3d |mePlus24|Hours +=|
|00000960| 20 32 34 4c 2a 36 30 4c | 2a 36 30 4c 3b 0d 0d 09 | 24L*60L|*60L;...|
|00000970| 69 66 20 28 4d 79 47 65 | 74 48 61 6e 64 6c 65 53 |if (MyGe|tHandleS|
|00000980| 69 7a 65 28 67 47 72 6f | 75 70 49 6e 66 6f 29 20 |ize(gGro|upInfo) |
|00000990| 21 3d 20 67 4e 75 6d 47 | 72 6f 75 70 49 6e 66 6f |!= gNumG|roupInfo|
|000009a0| 2a 73 69 7a 65 6f 66 28 | 54 47 72 6f 75 70 49 6e |*sizeof(|TGroupIn|
|000009b0| 66 6f 29 29 20 67 6f 74 | 6f 20 65 78 69 74 3b 0d |fo)) got|o exit;.|
|000009c0| 09 66 6f 72 20 28 69 20 | 3d 20 30 2c 20 71 20 3d |.for (i |= 0, q =|
|000009d0| 20 2a 67 47 72 6f 75 70 | 49 6e 66 6f 3b 20 69 20 | *gGroup|Info; i |
|000009e0| 3c 20 67 4e 75 6d 47 72 | 6f 75 70 49 6e 66 6f 3b |< gNumGr|oupInfo;|
|000009f0| 20 69 2b 2b 2c 20 71 2b | 2b 29 20 7b 0d 09 09 69 | i++, q+|+) {...i|
|00000a00| 66 20 28 71 2d 3e 6f 66 | 66 73 65 74 20 3c 20 30 |f (q->of|fset < 0|
|00000a10| 29 20 67 6f 74 6f 20 65 | 78 69 74 3b 0d 09 09 69 |) goto e|xit;...i|
|00000a20| 66 20 28 71 2d 3e 6f 66 | 66 73 65 74 20 3e 3d 20 |f (q->of|fset >= |
|00000a30| 67 53 74 72 69 6e 67 73 | 55 73 65 64 29 20 67 6f |gStrings|Used) go|
|00000a40| 74 6f 20 65 78 69 74 3b | 0d 09 09 69 66 20 28 73 |to exit;|...if (s|
|00000a50| 74 72 6c 65 6e 28 2a 67 | 53 74 72 69 6e 67 73 20 |trlen(*g|Strings |
|00000a60| 2b 20 71 2d 3e 6f 66 66 | 73 65 74 29 20 3e 20 32 |+ q->off|set) > 2|
|00000a70| 35 35 29 20 67 6f 74 6f | 20 65 78 69 74 3b 0d 09 |55) goto| exit;..|
|00000a80| 09 6e 75 6d 43 61 63 68 | 65 64 20 3d 20 30 3b 0d |.numCach|ed = 0;.|
|00000a90| 09 09 66 6f 72 20 28 6a | 20 3d 20 30 2c 20 70 20 |..for (j| = 0, p |
|00000aa0| 3d 20 2a 67 41 72 74 69 | 63 6c 65 49 6e 66 6f 3b |= *gArti|cleInfo;|
|00000ab0| 20 6a 20 3c 20 67 4e 75 | 6d 41 72 74 69 63 6c 65 | j < gNu|mArticle|
|00000ac0| 49 6e 66 6f 3b 20 6a 2b | 2b 2c 20 70 2b 2b 29 0d |Info; j+|+, p++).|
|00000ad0| 09 09 09 69 66 20 28 70 | 2d 3e 67 72 6f 75 70 49 |...if (p|->groupI|
|00000ae0| 6e 64 65 78 20 3d 3d 20 | 69 29 20 6e 75 6d 43 61 |ndex == |i) numCa|
|00000af0| 63 68 65 64 2b 2b 3b 0d | 09 09 69 66 20 28 6e 75 |ched++;.|..if (nu|
|00000b00| 6d 43 61 63 68 65 64 20 | 21 3d 20 71 2d 3e 6e 75 |mCached |!= q->nu|
|00000b10| 6d 43 61 63 68 65 64 29 | 20 67 6f 74 6f 20 65 78 |mCached)| goto ex|
|00000b20| 69 74 3b 0d 09 7d 0d 09 | 0d 09 69 66 20 28 4d 79 |it;..}..|..if (My|
|00000b30| 47 65 74 48 61 6e 64 6c | 65 53 69 7a 65 28 67 41 |GetHandl|eSize(gA|
|00000b40| 72 74 69 63 6c 65 49 6e | 66 6f 29 20 21 3d 20 67 |rticleIn|fo) != g|
|00000b50| 4e 75 6d 41 72 74 69 63 | 6c 65 49 6e 66 6f 2a 73 |NumArtic|leInfo*s|
|00000b60| 69 7a 65 6f 66 28 54 41 | 72 74 69 63 6c 65 49 6e |izeof(TA|rticleIn|
|00000b70| 66 6f 29 29 20 67 6f 74 | 6f 20 65 78 69 74 3b 0d |fo)) got|o exit;.|
|00000b80| 09 66 6f 72 20 28 69 20 | 3d 20 30 2c 20 70 20 3d |.for (i |= 0, p =|
|00000b90| 20 2a 67 41 72 74 69 63 | 6c 65 49 6e 66 6f 3b 20 | *gArtic|leInfo; |
|00000ba0| 69 20 3c 20 67 4e 75 6d | 41 72 74 69 63 6c 65 49 |i < gNum|ArticleI|
|00000bb0| 6e 66 6f 3b 20 69 2b 2b | 2c 20 70 2b 2b 29 20 7b |nfo; i++|, p++) {|
|00000bc0| 0d 09 09 69 66 20 28 70 | 2d 3e 67 72 6f 75 70 49 |...if (p|->groupI|
|00000bd0| 6e 64 65 78 20 3c 20 30 | 29 20 67 6f 74 6f 20 65 |ndex < 0|) goto e|
|00000be0| 78 69 74 3b 0d 09 09 69 | 66 20 28 70 2d 3e 67 72 |xit;...i|f (p->gr|
|00000bf0| 6f 75 70 49 6e 64 65 78 | 20 3e 3d 20 67 4e 75 6d |oupIndex| >= gNum|
|00000c00| 47 72 6f 75 70 49 6e 66 | 6f 29 20 67 6f 74 6f 20 |GroupInf|o) goto |
|00000c10| 65 78 69 74 3b 0d 09 09 | 69 66 20 28 70 2d 3e 6e |exit;...|if (p->n|
|00000c20| 75 6d 62 65 72 20 3c 3d | 20 30 29 20 67 6f 74 6f |umber <=| 0) goto|
|00000c30| 20 65 78 69 74 3b 0d 09 | 09 69 66 20 28 70 2d 3e | exit;..|.if (p->|
|00000c40| 73 75 62 6a 65 63 74 4f | 66 66 73 65 74 20 3c 20 |subjectO|ffset < |
|00000c50| 30 29 20 67 6f 74 6f 20 | 65 78 69 74 3b 0d 09 09 |0) goto |exit;...|
|00000c60| 69 66 20 28 70 2d 3e 73 | 75 62 6a 65 63 74 4f 66 |if (p->s|ubjectOf|
|00000c70| 66 73 65 74 20 3e 3d 20 | 67 53 74 72 69 6e 67 73 |fset >= |gStrings|
|00000c80| 55 73 65 64 29 20 67 6f | 74 6f 20 65 78 69 74 3b |Used) go|to exit;|
|00000c90| 0d 09 09 69 66 20 28 73 | 74 72 6c 65 6e 28 2a 67 |...if (s|trlen(*g|
|00000ca0| 53 74 72 69 6e 67 73 20 | 2b 20 70 2d 3e 73 75 62 |Strings |+ p->sub|
|00000cb0| 6a 65 63 74 4f 66 66 73 | 65 74 29 20 3e 20 32 35 |jectOffs|et) > 25|
|00000cc0| 35 29 20 67 6f 74 6f 20 | 65 78 69 74 3b 0d 09 09 |5) goto |exit;...|
|00000cd0| 69 66 20 28 70 2d 3e 61 | 75 74 68 6f 72 4f 66 66 |if (p->a|uthorOff|
|00000ce0| 73 65 74 20 3c 20 30 29 | 20 67 6f 74 6f 20 65 78 |set < 0)| goto ex|
|00000cf0| 69 74 3b 0d 09 09 69 66 | 20 28 70 2d 3e 61 75 74 |it;...if| (p->aut|
|00000d00| 68 6f 72 4f 66 66 73 65 | 74 20 3e 3d 20 67 53 74 |horOffse|t >= gSt|
|00000d10| 72 69 6e 67 73 55 73 65 | 64 29 20 67 6f 74 6f 20 |ringsUse|d) goto |
|00000d20| 65 78 69 74 3b 0d 09 09 | 69 66 20 28 73 74 72 6c |exit;...|if (strl|
|00000d30| 65 6e 28 2a 67 53 74 72 | 69 6e 67 73 20 2b 20 70 |en(*gStr|ings + p|
|00000d40| 2d 3e 61 75 74 68 6f 72 | 4f 66 66 73 65 74 29 20 |->author|Offset) |
|00000d50| 3e 20 32 35 35 29 20 67 | 6f 74 6f 20 65 78 69 74 |> 255) g|oto exit|
|00000d60| 3b 0d 09 09 69 66 20 28 | 70 2d 3e 63 72 65 61 74 |;...if (|p->creat|
|00000d70| 69 6f 6e 44 61 74 65 54 | 69 6d 65 20 3e 20 6e 6f |ionDateT|ime > no|
|00000d80| 77 44 61 74 65 54 69 6d | 65 50 6c 75 73 32 34 48 |wDateTim|ePlus24H|
|00000d90| 6f 75 72 73 29 20 67 6f | 74 6f 20 65 78 69 74 3b |ours) go|to exit;|
|00000da0| 0d 09 7d 0d 09 0d 09 72 | 65 74 75 72 6e 20 74 72 |..}....r|eturn tr|
|00000db0| 75 65 3b 0d 09 0d 65 78 | 69 74 3a 0d 0d 09 45 72 |ue;...ex|it:...Er|
|00000dc0| 72 6f 72 4d 65 73 73 61 | 67 65 4e 75 6d 62 65 72 |rorMessa|geNumber|
|00000dd0| 28 6b 53 74 72 44 61 6d | 61 67 65 64 43 61 63 68 |(kStrDam|agedCach|
|00000de0| 65 29 3b 0d 09 72 65 74 | 75 72 6e 20 66 61 6c 73 |e);..ret|urn fals|
|00000df0| 65 3b 0d 7d 0d 09 0d 0d | 0d 2f 2a 2d 2d 2d 2d 2d |e;.}....|./*-----|
|00000e00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000e10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000e20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000e30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000e40| 2d 2d 2d 2d 2d 2d 2d 0d | 09 52 65 61 64 41 72 74 |-------.|.ReadArt|
|00000e50| 69 63 6c 65 43 61 63 68 | 65 20 0d 09 0d 09 52 65 |icleCach|e ....Re|
|00000e60| 61 64 20 74 68 65 20 61 | 72 74 69 63 6c 65 20 63 |ad the a|rticle c|
|00000e70| 61 63 68 65 20 66 72 6f | 6d 20 74 68 65 20 70 72 |ache fro|m the pr|
|00000e80| 65 66 73 20 66 69 6c 65 | 2e 0d 09 09 09 0d 09 45 |efs file|.......E|
|00000e90| 78 69 74 3a 09 66 75 6e | 63 74 69 6f 6e 20 72 65 |xit:.fun|ction re|
|00000ea0| 73 75 6c 74 20 3d 20 65 | 72 72 6f 72 20 63 6f 64 |sult = e|rror cod|
|00000eb0| 65 2e 0d 09 0d 09 54 68 | 69 73 20 66 75 6e 63 74 |e.....Th|is funct|
|00000ec0| 69 6f 6e 20 6d 75 73 74 | 20 62 65 20 63 61 6c 6c |ion must| be call|
|00000ed0| 65 64 20 64 75 72 69 6e | 67 20 69 6e 69 74 69 61 |ed durin|g initia|
|00000ee0| 6c 69 7a 61 74 69 6f 6e | 2c 20 77 68 65 6e 20 74 |lization|, when t|
|00000ef0| 68 65 20 70 72 65 66 73 | 0d 09 66 69 6c 65 20 69 |he prefs|..file i|
|00000f00| 73 20 72 65 61 64 2e 0d | 2d 2d 2d 2d 2d 2d 2d 2d |s read..|--------|
|00000f10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000f20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000f30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000f40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000f50| 2d 2d 2d 2d 2a 2f 0d 0d | 4f 53 45 72 72 20 52 65 |----*/..|OSErr Re|
|00000f60| 61 64 41 72 74 69 63 6c | 65 43 61 63 68 65 20 28 |adArticl|eCache (|
|00000f70| 76 6f 69 64 29 0d 7b 0d | 09 4f 53 45 72 72 20 65 |void).{.|.OSErr e|
|00000f80| 72 72 20 3d 20 6e 6f 45 | 72 72 3b 0d 0d 09 65 72 |rr = noE|rr;...er|
|00000f90| 72 20 3d 20 4d 79 47 65 | 74 31 52 65 73 6f 75 72 |r = MyGe|t1Resour|
|00000fa0| 63 65 28 6b 43 61 63 68 | 65 52 65 73 6f 75 72 63 |ce(kCach|eResourc|
|00000fb0| 65 54 79 70 65 2c 20 6b | 43 61 63 68 65 47 72 6f |eType, k|CacheGro|
|00000fc0| 75 70 41 72 72 61 79 49 | 44 2c 20 26 67 47 72 6f |upArrayI|D, &gGro|
|00000fd0| 75 70 49 6e 66 6f 29 3b | 0d 09 69 66 20 28 65 72 |upInfo);|..if (er|
|00000fe0| 72 20 3d 3d 20 72 65 73 | 4e 6f 74 46 6f 75 6e 64 |r == res|NotFound|
|00000ff0| 29 20 7b 0d 09 09 65 72 | 72 20 3d 20 4d 79 4e 65 |) {...er|r = MyNe|
|00001000| 77 48 61 6e 64 6c 65 28 | 30 2c 20 26 67 53 74 72 |wHandle(|0, &gStr|
|00001010| 69 6e 67 73 29 3b 0d 09 | 09 69 66 20 28 65 72 72 |ings);..|.if (err|
|00001020| 20 21 3d 20 6e 6f 45 72 | 72 29 20 67 6f 74 6f 20 | != noEr|r) goto |
|00001030| 65 78 69 74 3b 0d 09 09 | 65 72 72 20 3d 20 4d 79 |exit;...|err = My|
|00001040| 4e 65 77 48 61 6e 64 6c | 65 28 30 2c 20 26 67 47 |NewHandl|e(0, &gG|
|00001050| 72 6f 75 70 49 6e 66 6f | 29 3b 0d 09 09 69 66 20 |roupInfo|);...if |
|00001060| 28 65 72 72 20 21 3d 20 | 6e 6f 45 72 72 29 20 67 |(err != |noErr) g|
|00001070| 6f 74 6f 20 65 78 69 74 | 3b 0d 09 09 65 72 72 20 |oto exit|;...err |
|00001080| 3d 20 4d 79 4e 65 77 48 | 61 6e 64 6c 65 28 30 2c |= MyNewH|andle(0,|
|00001090| 20 26 67 41 72 74 69 63 | 6c 65 49 6e 66 6f 29 3b | &gArtic|leInfo);|
|000010a0| 0d 09 09 69 66 20 28 65 | 72 72 20 21 3d 20 6e 6f |...if (e|rr != no|
|000010b0| 45 72 72 29 20 67 6f 74 | 6f 20 65 78 69 74 3b 0d |Err) got|o exit;.|
|000010c0| 09 7d 20 65 6c 73 65 20 | 69 66 20 28 65 72 72 20 |.} else |if (err |
|000010d0| 3d 3d 20 6e 6f 45 72 72 | 29 20 7b 0d 09 09 44 65 |== noErr|) {...De|
|000010e0| 74 61 63 68 52 65 73 6f | 75 72 63 65 28 28 48 61 |tachReso|urce((Ha|
|000010f0| 6e 64 6c 65 29 67 47 72 | 6f 75 70 49 6e 66 6f 29 |ndle)gGr|oupInfo)|
|00001100| 3b 0d 09 09 67 4e 75 6d | 47 72 6f 75 70 49 6e 66 |;...gNum|GroupInf|
|00001110| 6f 20 3d 20 4d 79 47 65 | 74 48 61 6e 64 6c 65 53 |o = MyGe|tHandleS|
|00001120| 69 7a 65 28 67 47 72 6f | 75 70 49 6e 66 6f 29 20 |ize(gGro|upInfo) |
|00001130| 2f 20 73 69 7a 65 6f 66 | 28 54 47 72 6f 75 70 49 |/ sizeof|(TGroupI|
|00001140| 6e 66 6f 29 3b 0d 09 09 | 65 72 72 20 3d 20 4d 79 |nfo);...|err = My|
|00001150| 47 65 74 31 52 65 73 6f | 75 72 63 65 28 6b 43 61 |Get1Reso|urce(kCa|
|00001160| 63 68 65 52 65 73 6f 75 | 72 63 65 54 79 70 65 2c |cheResou|rceType,|
|00001170| 20 6b 43 61 63 68 65 41 | 72 74 69 63 6c 65 41 72 | kCacheA|rticleAr|
|00001180| 72 61 79 49 44 2c 20 26 | 67 41 72 74 69 63 6c 65 |rayID, &|gArticle|
|00001190| 49 6e 66 6f 29 3b 0d 09 | 09 69 66 20 28 65 72 72 |Info);..|.if (err|
|000011a0| 20 21 3d 20 6e 6f 45 72 | 72 29 20 67 6f 74 6f 20 | != noEr|r) goto |
|000011b0| 65 78 69 74 3b 0d 09 09 | 44 65 74 61 63 68 52 65 |exit;...|DetachRe|
|000011c0| 73 6f 75 72 63 65 28 28 | 48 61 6e 64 6c 65 29 67 |source((|Handle)g|
|000011d0| 41 72 74 69 63 6c 65 49 | 6e 66 6f 29 3b 0d 09 09 |ArticleI|nfo);...|
|000011e0| 67 4e 75 6d 41 72 74 69 | 63 6c 65 49 6e 66 6f 20 |gNumArti|cleInfo |
|000011f0| 3d 20 4d 79 47 65 74 48 | 61 6e 64 6c 65 53 69 7a |= MyGetH|andleSiz|
|00001200| 65 28 67 41 72 74 69 63 | 6c 65 49 6e 66 6f 29 20 |e(gArtic|leInfo) |
|00001210| 2f 20 73 69 7a 65 6f 66 | 28 54 41 72 74 69 63 6c |/ sizeof|(TArticl|
|00001220| 65 49 6e 66 6f 29 3b 0d | 09 09 65 72 72 20 3d 20 |eInfo);.|..err = |
|00001230| 4d 79 47 65 74 31 52 65 | 73 6f 75 72 63 65 28 6b |MyGet1Re|source(k|
|00001240| 43 61 63 68 65 52 65 73 | 6f 75 72 63 65 54 79 70 |CacheRes|ourceTyp|
|00001250| 65 2c 20 6b 43 61 63 68 | 65 53 74 72 69 6e 67 73 |e, kCach|eStrings|
|00001260| 42 6c 6f 63 6b 49 44 2c | 20 26 67 53 74 72 69 6e |BlockID,| &gStrin|
|00001270| 67 73 29 3b 0d 09 09 69 | 66 20 28 65 72 72 20 21 |gs);...i|f (err !|
|00001280| 3d 20 6e 6f 45 72 72 29 | 20 67 6f 74 6f 20 65 78 |= noErr)| goto ex|
|00001290| 69 74 3b 0d 09 09 44 65 | 74 61 63 68 52 65 73 6f |it;...De|tachReso|
|000012a0| 75 72 63 65 28 67 53 74 | 72 69 6e 67 73 29 3b 0d |urce(gSt|rings);.|
|000012b0| 09 09 67 53 74 72 69 6e | 67 73 41 6c 6c 6f 63 61 |..gStrin|gsAlloca|
|000012c0| 74 65 64 20 3d 20 67 53 | 74 72 69 6e 67 73 55 73 |ted = gS|tringsUs|
|000012d0| 65 64 20 3d 20 4d 79 47 | 65 74 48 61 6e 64 6c 65 |ed = MyG|etHandle|
|000012e0| 53 69 7a 65 28 67 53 74 | 72 69 6e 67 73 29 3b 0d |Size(gSt|rings);.|
|000012f0| 09 09 69 66 20 28 21 56 | 61 6c 69 64 43 61 63 68 |..if (!V|alidCach|
|00001300| 65 28 29 29 20 7b 0d 09 | 09 09 46 6c 75 73 68 41 |e()) {..|..FlushA|
|00001310| 72 74 69 63 6c 65 43 61 | 63 68 65 28 29 3b 0d 09 |rticleCa|che();..|
|00001320| 09 09 72 65 74 75 72 6e | 20 75 73 65 72 43 61 6e |..return| userCan|
|00001330| 63 65 6c 65 64 45 72 72 | 3b 0d 09 09 7d 0d 09 7d |celedErr|;...}..}|
|00001340| 20 65 6c 73 65 20 7b 0d | 09 09 67 6f 74 6f 20 65 | else {.|..goto e|
|00001350| 78 69 74 3b 0d 09 7d 0d | 09 72 65 74 75 72 6e 20 |xit;..}.|.return |
|00001360| 6e 6f 45 72 72 3b 0d 09 | 0d 65 78 69 74 3a 0d 0d |noErr;..|.exit:..|
|00001370| 09 4d 79 44 69 73 70 6f | 73 65 48 61 6e 64 6c 65 |.MyDispo|seHandle|
|00001380| 28 67 47 72 6f 75 70 49 | 6e 66 6f 29 3b 0d 09 4d |(gGroupI|nfo);..M|
|00001390| 79 44 69 73 70 6f 73 65 | 48 61 6e 64 6c 65 28 67 |yDispose|Handle(g|
|000013a0| 41 72 74 69 63 6c 65 49 | 6e 66 6f 29 3b 0d 09 4d |ArticleI|nfo);..M|
|000013b0| 79 44 69 73 70 6f 73 65 | 48 61 6e 64 6c 65 28 67 |yDispose|Handle(g|
|000013c0| 53 74 72 69 6e 67 73 29 | 3b 0d 09 67 47 72 6f 75 |Strings)|;..gGrou|
|000013d0| 70 49 6e 66 6f 20 3d 20 | 6e 69 6c 3b 0d 09 67 41 |pInfo = |nil;..gA|
|000013e0| 72 74 69 63 6c 65 49 6e | 66 6f 20 3d 20 6e 69 6c |rticleIn|fo = nil|
|000013f0| 3b 0d 09 67 53 74 72 69 | 6e 67 73 20 3d 20 6e 69 |;..gStri|ngs = ni|
|00001400| 6c 3b 0d 09 67 4e 75 6d | 47 72 6f 75 70 49 6e 66 |l;..gNum|GroupInf|
|00001410| 6f 20 3d 20 67 4e 75 6d | 41 72 74 69 63 6c 65 49 |o = gNum|ArticleI|
|00001420| 6e 66 6f 20 3d 20 67 53 | 74 72 69 6e 67 73 41 6c |nfo = gS|tringsAl|
|00001430| 6c 6f 63 61 74 65 64 20 | 3d 20 67 53 74 72 69 6e |located |= gStrin|
|00001440| 67 73 55 73 65 64 20 3d | 20 30 3b 0d 09 67 43 61 |gsUsed =| 0;..gCa|
|00001450| 63 68 65 44 69 72 74 79 | 20 3d 20 74 72 75 65 3b |cheDirty| = true;|
|00001460| 0d 09 72 65 74 75 72 6e | 20 65 72 72 3b 0d 7d 0d |..return| err;.}.|
|00001470| 0d 0d 0d 2f 2a 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.../*---|--------|
|00001480| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001490| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014c0| 2d 0d 09 43 6f 6d 70 61 | 63 74 41 72 74 69 63 6c |-..Compa|ctArticl|
|000014d0| 65 43 61 63 68 65 20 0d | 09 0d 09 43 6f 6d 70 61 |eCache .|...Compa|
|000014e0| 63 74 20 74 68 65 20 63 | 61 63 68 65 2e 0d 2d 2d |ct the c|ache..--|
|000014f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001500| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001510| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001520| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001530| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2a 2f 0d 0d 76 6f |--------|--*/..vo|
|00001540| 69 64 20 43 6f 6d 70 61 | 63 74 41 72 74 69 63 6c |id Compa|ctArticl|
|00001550| 65 43 61 63 68 65 20 28 | 76 6f 69 64 29 0d 7b 0d |eCache (|void).{.|
|00001560| 09 54 47 72 6f 75 70 49 | 6e 66 6f 20 2a 2a 67 72 |.TGroupI|nfo **gr|
|00001570| 6f 75 70 49 6e 66 6f 20 | 3d 20 6e 69 6c 2c 20 2a |oupInfo |= nil, *|
|00001580| 71 31 2c 20 2a 71 32 3b | 0d 09 54 41 72 74 69 63 |q1, *q2;|..TArtic|
|00001590| 6c 65 49 6e 66 6f 20 2a | 2a 61 72 74 69 63 6c 65 |leInfo *|*article|
|000015a0| 49 6e 66 6f 20 3d 20 6e | 69 6c 2c 20 2a 70 31 2c |Info = n|il, *p1,|
|000015b0| 20 2a 70 32 3b 0d 09 48 | 61 6e 64 6c 65 20 73 74 | *p2;..H|andle st|
|000015c0| 72 69 6e 67 73 20 3d 20 | 6e 69 6c 3b 0d 09 6c 6f |rings = |nil;..lo|
|000015d0| 6e 67 20 6e 75 6d 47 72 | 6f 75 70 49 6e 66 6f 2c |ng numGr|oupInfo,|
|000015e0| 20 6e 75 6d 41 72 74 69 | 63 6c 65 49 6e 66 6f 2c | numArti|cleInfo,|
|000015f0| 20 73 74 72 69 6e 67 73 | 55 73 65 64 2c 20 73 69 | strings|Used, si|
|00001600| 7a 65 2c 20 69 2c 20 6a | 2c 20 6b 3b 0d 09 4f 53 |ze, i, j|, k;..OS|
|00001610| 45 72 72 20 65 72 72 20 | 3d 20 6e 6f 45 72 72 3b |Err err |= noErr;|
|00001620| 0d 09 73 68 6f 72 74 20 | 73 4c 65 6e 2c 20 61 4c |..short |sLen, aL|
|00001630| 65 6e 3b 0d 09 75 6e 73 | 69 67 6e 65 64 20 6c 6f |en;..uns|igned lo|
|00001640| 6e 67 20 6e 6f 77 44 61 | 74 65 54 69 6d 65 4d 69 |ng nowDa|teTimeMi|
|00001650| 6e 75 73 36 30 44 61 79 | 73 3b 0d 0d 09 69 66 20 |nus60Day|s;...if |
|00001660| 28 67 47 72 6f 75 70 49 | 6e 66 6f 20 3d 3d 20 6e |(gGroupI|nfo == n|
|00001670| 69 6c 29 20 72 65 74 75 | 72 6e 3b 0d 09 47 65 74 |il) retu|rn;..Get|
|00001680| 44 61 74 65 54 69 6d 65 | 28 26 6e 6f 77 44 61 74 |DateTime|(&nowDat|
|00001690| 65 54 69 6d 65 4d 69 6e | 75 73 36 30 44 61 79 73 |eTimeMin|us60Days|
|000016a0| 29 3b 0d 09 6e 6f 77 44 | 61 74 65 54 69 6d 65 4d |);..nowD|ateTimeM|
|000016b0| 69 6e 75 73 36 30 44 61 | 79 73 20 2d 3d 20 36 30 |inus60Da|ys -= 60|
|000016c0| 4c 2a 32 34 4c 2a 36 30 | 4c 2a 36 30 4c 3b 0d 0d |L*24L*60|L*60L;..|
|000016d0| 09 4d 79 53 65 74 48 61 | 6e 64 6c 65 53 69 7a 65 |.MySetHa|ndleSize|
|000016e0| 28 67 53 74 72 69 6e 67 | 73 2c 20 67 53 74 72 69 |(gString|s, gStri|
|000016f0| 6e 67 73 55 73 65 64 29 | 3b 0d 09 0d 09 73 69 7a |ngsUsed)|;....siz|
|00001700| 65 20 3d 20 4d 79 47 65 | 74 48 61 6e 64 6c 65 53 |e = MyGe|tHandleS|
|00001710| 69 7a 65 28 67 47 72 6f | 75 70 49 6e 66 6f 29 3b |ize(gGro|upInfo);|
|00001720| 0d 09 65 72 72 20 3d 20 | 4d 79 4e 65 77 48 61 6e |..err = |MyNewHan|
|00001730| 64 6c 65 28 73 69 7a 65 | 2c 20 26 67 72 6f 75 70 |dle(size|, &group|
|00001740| 49 6e 66 6f 29 3b 0d 09 | 69 66 20 28 65 72 72 20 |Info);..|if (err |
|00001750| 21 3d 20 6e 6f 45 72 72 | 29 20 67 6f 74 6f 20 65 |!= noErr|) goto e|
|00001760| 78 69 74 3b 0d 09 6e 75 | 6d 47 72 6f 75 70 49 6e |xit;..nu|mGroupIn|
|00001770| 66 6f 20 3d 20 30 3b 0d | 09 0d 09 73 69 7a 65 20 |fo = 0;.|...size |
|00001780| 3d 20 4d 79 47 65 74 48 | 61 6e 64 6c 65 53 69 7a |= MyGetH|andleSiz|
|00001790| 65 28 67 41 72 74 69 63 | 6c 65 49 6e 66 6f 29 3b |e(gArtic|leInfo);|
|000017a0| 0d 09 65 72 72 20 3d 20 | 4d 79 4e 65 77 48 61 6e |..err = |MyNewHan|
|000017b0| 64 6c 65 28 73 69 7a 65 | 2c 20 26 61 72 74 69 63 |dle(size|, &artic|
|000017c0| 6c 65 49 6e 66 6f 29 3b | 0d 09 69 66 20 28 65 72 |leInfo);|..if (er|
|000017d0| 72 20 21 3d 20 6e 6f 45 | 72 72 29 20 67 6f 74 6f |r != noE|rr) goto|
|000017e0| 20 65 78 69 74 3b 0d 09 | 42 6c 6f 63 6b 4d 6f 76 | exit;..|BlockMov|
|000017f0| 65 44 61 74 61 28 2a 67 | 41 72 74 69 63 6c 65 49 |eData(*g|ArticleI|
|00001800| 6e 66 6f 2c 20 2a 61 72 | 74 69 63 6c 65 49 6e 66 |nfo, *ar|ticleInf|
|00001810| 6f 2c 20 73 69 7a 65 29 | 3b 0d 09 6e 75 6d 41 72 |o, size)|;..numAr|
|00001820| 74 69 63 6c 65 49 6e 66 | 6f 20 3d 20 30 3b 0d 09 |ticleInf|o = 0;..|
|00001830| 0d 09 73 69 7a 65 20 3d | 20 4d 79 47 65 74 48 61 |..size =| MyGetHa|
|00001840| 6e 64 6c 65 53 69 7a 65 | 28 67 53 74 72 69 6e 67 |ndleSize|(gString|
|00001850| 73 29 3b 0d 09 65 72 72 | 20 3d 20 4d 79 4e 65 77 |s);..err| = MyNew|
|00001860| 48 61 6e 64 6c 65 28 73 | 69 7a 65 2c 20 26 73 74 |Handle(s|ize, &st|
|00001870| 72 69 6e 67 73 29 3b 0d | 09 69 66 20 28 65 72 72 |rings);.|.if (err|
|00001880| 20 21 3d 20 6e 6f 45 72 | 72 29 20 67 6f 74 6f 20 | != noEr|r) goto |
|00001890| 65 78 69 74 3b 0d 09 73 | 74 72 69 6e 67 73 55 73 |exit;..s|tringsUs|
|000018a0| 65 64 20 3d 20 30 3b 0d | 09 0d 09 66 6f 72 20 28 |ed = 0;.|...for (|
|000018b0| 69 20 3d 20 30 2c 20 6a | 20 3d 20 30 2c 20 71 31 |i = 0, j| = 0, q1|
|000018c0| 20 3d 20 2a 67 72 6f 75 | 70 49 6e 66 6f 2c 20 71 | = *grou|pInfo, q|
|000018d0| 32 20 3d 20 2a 67 47 72 | 6f 75 70 49 6e 66 6f 3b |2 = *gGr|oupInfo;|
|000018e0| 20 6a 20 3c 20 67 4e 75 | 6d 47 72 6f 75 70 49 6e | j < gNu|mGroupIn|
|000018f0| 66 6f 3b 20 6a 2b 2b 2c | 20 71 32 2b 2b 29 20 7b |fo; j++,| q2++) {|
|00001900| 0d 09 09 69 66 20 28 71 | 32 2d 3e 6e 75 6d 43 61 |...if (q|2->numCa|
|00001910| 63 68 65 64 20 3e 20 30 | 29 20 7b 0d 09 09 09 71 |ched > 0|) {....q|
|00001920| 31 2d 3e 6f 66 66 73 65 | 74 20 3d 20 73 74 72 69 |1->offse|t = stri|
|00001930| 6e 67 73 55 73 65 64 3b | 0d 09 09 09 71 31 2d 3e |ngsUsed;|....q1->|
|00001940| 6e 75 6d 43 61 63 68 65 | 64 20 3d 20 30 3b 0d 09 |numCache|d = 0;..|
|00001950| 09 09 73 74 72 63 70 79 | 28 2a 73 74 72 69 6e 67 |..strcpy|(*string|
|00001960| 73 20 2b 20 73 74 72 69 | 6e 67 73 55 73 65 64 2c |s + stri|ngsUsed,|
|00001970| 20 2a 67 53 74 72 69 6e | 67 73 20 2b 20 71 32 2d | *gStrin|gs + q2-|
|00001980| 3e 6f 66 66 73 65 74 29 | 3b 0d 09 09 09 73 74 72 |>offset)|;....str|
|00001990| 69 6e 67 73 55 73 65 64 | 20 2b 3d 20 73 74 72 6c |ingsUsed| += strl|
|000019a0| 65 6e 28 2a 73 74 72 69 | 6e 67 73 20 2b 20 73 74 |en(*stri|ngs + st|
|000019b0| 72 69 6e 67 73 55 73 65 | 64 29 20 2b 20 31 3b 0d |ringsUse|d) + 1;.|
|000019c0| 09 09 09 6e 75 6d 47 72 | 6f 75 70 49 6e 66 6f 2b |...numGr|oupInfo+|
|000019d0| 2b 3b 0d 09 09 09 71 31 | 2b 2b 3b 0d 09 09 09 69 |+;....q1|++;....i|
|000019e0| 66 20 28 69 20 21 3d 20 | 6a 29 20 7b 0d 09 09 09 |f (i != |j) {....|
|000019f0| 09 66 6f 72 20 28 6b 20 | 3d 20 30 2c 20 70 31 20 |.for (k |= 0, p1 |
|00001a00| 3d 20 2a 61 72 74 69 63 | 6c 65 49 6e 66 6f 3b 20 |= *artic|leInfo; |
|00001a10| 6b 20 3c 20 67 4e 75 6d | 41 72 74 69 63 6c 65 49 |k < gNum|ArticleI|
|00001a20| 6e 66 6f 3b 20 6b 2b 2b | 2c 20 70 31 2b 2b 29 0d |nfo; k++|, p1++).|
|00001a30| 09 09 09 09 09 69 66 20 | 28 70 31 2d 3e 67 72 6f |.....if |(p1->gro|
|00001a40| 75 70 49 6e 64 65 78 20 | 3d 3d 20 6a 29 20 70 31 |upIndex |== j) p1|
|00001a50| 2d 3e 67 72 6f 75 70 49 | 6e 64 65 78 20 3d 20 69 |->groupI|ndex = i|
|00001a60| 3b 0d 09 09 09 7d 0d 09 | 09 09 69 2b 2b 3b 0d 09 |;....}..|..i++;..|
|00001a70| 09 7d 0d 09 7d 0d 09 4d | 79 53 65 74 48 61 6e 64 |.}..}..M|ySetHand|
|00001a80| 6c 65 53 69 7a 65 28 67 | 72 6f 75 70 49 6e 66 6f |leSize(g|roupInfo|
|00001a90| 2c 20 6e 75 6d 47 72 6f | 75 70 49 6e 66 6f 20 2a |, numGro|upInfo *|
|00001aa0| 20 73 69 7a 65 6f 66 28 | 54 47 72 6f 75 70 49 6e | sizeof(|TGroupIn|
|00001ab0| 66 6f 29 29 3b 0d 09 0d | 09 66 6f 72 20 28 6a 20 |fo));...|.for (j |
|00001ac0| 3d 20 30 2c 20 70 31 20 | 3d 20 2a 61 72 74 69 63 |= 0, p1 |= *artic|
|00001ad0| 6c 65 49 6e 66 6f 2c 20 | 70 32 20 3d 20 2a 61 72 |leInfo, |p2 = *ar|
|00001ae0| 74 69 63 6c 65 49 6e 66 | 6f 3b 20 6a 20 3c 20 67 |ticleInf|o; j < g|
|00001af0| 4e 75 6d 41 72 74 69 63 | 6c 65 49 6e 66 6f 3b 20 |NumArtic|leInfo; |
|00001b00| 6a 2b 2b 2c 20 70 32 2b | 2b 29 20 7b 0d 09 09 69 |j++, p2+|+) {...i|
|00001b10| 66 20 28 70 32 2d 3e 67 | 72 6f 75 70 49 6e 64 65 |f (p2->g|roupInde|
|00001b20| 78 20 3e 3d 20 30 20 26 | 26 20 70 32 2d 3e 67 72 |x >= 0 &|& p2->gr|
|00001b30| 6f 75 70 49 6e 64 65 78 | 20 3c 20 6e 75 6d 47 72 |oupIndex| < numGr|
|00001b40| 6f 75 70 49 6e 66 6f 20 | 26 26 0d 09 09 09 70 32 |oupInfo |&&....p2|
|00001b50| 2d 3e 63 72 65 61 74 69 | 6f 6e 44 61 74 65 54 69 |->creati|onDateTi|
|00001b60| 6d 65 20 3e 3d 20 6e 6f | 77 44 61 74 65 54 69 6d |me >= no|wDateTim|
|00001b70| 65 4d 69 6e 75 73 36 30 | 44 61 79 73 29 20 0d 09 |eMinus60|Days) ..|
|00001b80| 09 7b 0d 09 09 09 73 4c | 65 6e 20 3d 20 73 74 72 |.{....sL|en = str|
|00001b90| 6c 65 6e 28 2a 67 53 74 | 72 69 6e 67 73 20 2b 20 |len(*gSt|rings + |
|00001ba0| 70 32 2d 3e 73 75 62 6a | 65 63 74 4f 66 66 73 65 |p2->subj|ectOffse|
|00001bb0| 74 29 3b 0d 09 09 09 61 | 4c 65 6e 20 3d 20 73 74 |t);....a|Len = st|
|00001bc0| 72 6c 65 6e 28 2a 67 53 | 74 72 69 6e 67 73 20 2b |rlen(*gS|trings +|
|00001bd0| 20 70 32 2d 3e 61 75 74 | 68 6f 72 4f 66 66 73 65 | p2->aut|horOffse|
|00001be0| 74 29 3b 0d 09 09 09 70 | 31 2d 3e 67 72 6f 75 70 |t);....p|1->group|
|00001bf0| 49 6e 64 65 78 20 3d 20 | 70 32 2d 3e 67 72 6f 75 |Index = |p2->grou|
|00001c00| 70 49 6e 64 65 78 3b 0d | 09 09 09 70 31 2d 3e 6e |pIndex;.|...p1->n|
|00001c10| 75 6d 62 65 72 20 3d 20 | 70 32 2d 3e 6e 75 6d 62 |umber = |p2->numb|
|00001c20| 65 72 3b 0d 09 09 09 73 | 74 72 63 70 79 28 2a 73 |er;....s|trcpy(*s|
|00001c30| 74 72 69 6e 67 73 20 2b | 20 73 74 72 69 6e 67 73 |trings +| strings|
|00001c40| 55 73 65 64 2c 20 2a 67 | 53 74 72 69 6e 67 73 20 |Used, *g|Strings |
|00001c50| 2b 20 70 32 2d 3e 73 75 | 62 6a 65 63 74 4f 66 66 |+ p2->su|bjectOff|
|00001c60| 73 65 74 29 3b 0d 09 09 | 09 70 31 2d 3e 73 75 62 |set);...|.p1->sub|
|00001c70| 6a 65 63 74 4f 66 66 73 | 65 74 20 3d 20 73 74 72 |jectOffs|et = str|
|00001c80| 69 6e 67 73 55 73 65 64 | 3b 0d 09 09 09 73 74 72 |ingsUsed|;....str|
|00001c90| 69 6e 67 73 55 73 65 64 | 20 2b 3d 20 73 4c 65 6e |ingsUsed| += sLen|
|00001ca0| 20 2b 20 31 3b 0d 09 09 | 09 73 74 72 63 70 79 28 | + 1;...|.strcpy(|
|00001cb0| 2a 73 74 72 69 6e 67 73 | 20 2b 20 73 74 72 69 6e |*strings| + strin|
|00001cc0| 67 73 55 73 65 64 2c 20 | 2a 67 53 74 72 69 6e 67 |gsUsed, |*gString|
|00001cd0| 73 20 2b 20 70 32 2d 3e | 61 75 74 68 6f 72 4f 66 |s + p2->|authorOf|
|00001ce0| 66 73 65 74 29 3b 0d 09 | 09 09 70 31 2d 3e 61 75 |fset);..|..p1->au|
|00001cf0| 74 68 6f 72 4f 66 66 73 | 65 74 20 3d 20 73 74 72 |thorOffs|et = str|
|00001d00| 69 6e 67 73 55 73 65 64 | 3b 0d 09 09 09 73 74 72 |ingsUsed|;....str|
|00001d10| 69 6e 67 73 55 73 65 64 | 20 2b 3d 20 61 4c 65 6e |ingsUsed| += aLen|
|00001d20| 20 2b 20 31 3b 0d 09 09 | 09 70 31 2d 3e 63 72 65 | + 1;...|.p1->cre|
|00001d30| 61 74 69 6f 6e 44 61 74 | 65 54 69 6d 65 20 3d 20 |ationDat|eTime = |
|00001d40| 70 32 2d 3e 63 72 65 61 | 74 69 6f 6e 44 61 74 65 |p2->crea|tionDate|
|00001d50| 54 69 6d 65 3b 0d 09 09 | 09 28 2a 67 72 6f 75 70 |Time;...|.(*group|
|00001d60| 49 6e 66 6f 29 5b 70 31 | 2d 3e 67 72 6f 75 70 49 |Info)[p1|->groupI|
|00001d70| 6e 64 65 78 5d 2e 6e 75 | 6d 43 61 63 68 65 64 2b |ndex].nu|mCached+|
|00001d80| 2b 3b 0d 09 09 09 6e 75 | 6d 41 72 74 69 63 6c 65 |+;....nu|mArticle|
|00001d90| 49 6e 66 6f 2b 2b 3b 0d | 09 09 09 70 31 2b 2b 3b |Info++;.|...p1++;|
|00001da0| 0d 09 09 7d 0d 09 7d 0d | 09 4d 79 53 65 74 48 61 |...}..}.|.MySetHa|
|00001db0| 6e 64 6c 65 53 69 7a 65 | 28 61 72 74 69 63 6c 65 |ndleSize|(article|
|00001dc0| 49 6e 66 6f 2c 20 6e 75 | 6d 41 72 74 69 63 6c 65 |Info, nu|mArticle|
|00001dd0| 49 6e 66 6f 20 2a 20 73 | 69 7a 65 6f 66 28 54 41 |Info * s|izeof(TA|
|00001de0| 72 74 69 63 6c 65 49 6e | 66 6f 29 29 3b 0d 09 0d |rticleIn|fo));...|
|00001df0| 09 4d 79 53 65 74 48 61 | 6e 64 6c 65 53 69 7a 65 |.MySetHa|ndleSize|
|00001e00| 28 73 74 72 69 6e 67 73 | 2c 20 73 74 72 69 6e 67 |(strings|, string|
|00001e10| 73 55 73 65 64 29 3b 0d | 09 0d 09 4d 79 44 69 73 |sUsed);.|...MyDis|
|00001e20| 70 6f 73 65 48 61 6e 64 | 6c 65 28 67 47 72 6f 75 |poseHand|le(gGrou|
|00001e30| 70 49 6e 66 6f 29 3b 0d | 09 67 47 72 6f 75 70 49 |pInfo);.|.gGroupI|
|00001e40| 6e 66 6f 20 3d 20 67 72 | 6f 75 70 49 6e 66 6f 3b |nfo = gr|oupInfo;|
|00001e50| 0d 09 67 4e 75 6d 47 72 | 6f 75 70 49 6e 66 6f 20 |..gNumGr|oupInfo |
|00001e60| 3d 20 6e 75 6d 47 72 6f | 75 70 49 6e 66 6f 3b 0d |= numGro|upInfo;.|
|00001e70| 09 4d 79 44 69 73 70 6f | 73 65 48 61 6e 64 6c 65 |.MyDispo|seHandle|
|00001e80| 28 67 41 72 74 69 63 6c | 65 49 6e 66 6f 29 3b 0d |(gArticl|eInfo);.|
|00001e90| 09 67 41 72 74 69 63 6c | 65 49 6e 66 6f 20 3d 20 |.gArticl|eInfo = |
|00001ea0| 61 72 74 69 63 6c 65 49 | 6e 66 6f 3b 0d 09 67 4e |articleI|nfo;..gN|
|00001eb0| 75 6d 41 72 74 69 63 6c | 65 49 6e 66 6f 20 3d 20 |umArticl|eInfo = |
|00001ec0| 6e 75 6d 41 72 74 69 63 | 6c 65 49 6e 66 6f 3b 0d |numArtic|leInfo;.|
|00001ed0| 09 4d 79 44 69 73 70 6f | 73 65 48 61 6e 64 6c 65 |.MyDispo|seHandle|
|00001ee0| 28 67 53 74 72 69 6e 67 | 73 29 3b 0d 09 67 53 74 |(gString|s);..gSt|
|00001ef0| 72 69 6e 67 73 20 3d 20 | 73 74 72 69 6e 67 73 3b |rings = |strings;|
|00001f00| 0d 09 67 53 74 72 69 6e | 67 73 55 73 65 64 20 3d |..gStrin|gsUsed =|
|00001f10| 20 67 53 74 72 69 6e 67 | 73 41 6c 6c 6f 63 61 74 | gString|sAllocat|
|00001f20| 65 64 20 3d 20 73 74 72 | 69 6e 67 73 55 73 65 64 |ed = str|ingsUsed|
|00001f30| 3b 0d 09 0d 09 67 43 61 | 63 68 65 44 69 72 74 79 |;....gCa|cheDirty|
|00001f40| 20 3d 20 74 72 75 65 3b | 0d 09 0d 09 72 65 74 75 | = true;|....retu|
|00001f50| 72 6e 3b 0d 09 0d 65 78 | 69 74 3a 0d 0d 09 4d 79 |rn;...ex|it:...My|
|00001f60| 44 69 73 70 6f 73 65 48 | 61 6e 64 6c 65 28 73 74 |DisposeH|andle(st|
|00001f70| 72 69 6e 67 73 29 3b 0d | 09 4d 79 44 69 73 70 6f |rings);.|.MyDispo|
|00001f80| 73 65 48 61 6e 64 6c 65 | 28 67 72 6f 75 70 49 6e |seHandle|(groupIn|
|00001f90| 66 6f 29 3b 0d 09 4d 79 | 44 69 73 70 6f 73 65 48 |fo);..My|DisposeH|
|00001fa0| 61 6e 64 6c 65 28 61 72 | 74 69 63 6c 65 49 6e 66 |andle(ar|ticleInf|
|00001fb0| 6f 29 3b 0d 7d 0d 0d 0d | 0d 2f 2a 2d 2d 2d 2d 2d |o);.}...|./*-----|
|00001fc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001fd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001fe0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ff0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002000| 2d 2d 2d 2d 2d 2d 2d 0d | 09 46 6c 75 73 68 41 72 |-------.|.FlushAr|
|00002010| 74 69 63 6c 65 43 61 63 | 68 65 20 0d 09 0d 09 46 |ticleCac|he ....F|
|00002020| 6c 75 73 68 20 74 68 65 | 20 63 61 63 68 65 2e 0d |lush the| cache..|
|00002030| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002040| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002050| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002060| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002070| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2a 2f 0d 0d |--------|----*/..|
|00002080| 76 6f 69 64 20 46 6c 75 | 73 68 41 72 74 69 63 6c |void Flu|shArticl|
|00002090| 65 43 61 63 68 65 20 28 | 76 6f 69 64 29 0d 7b 0d |eCache (|void).{.|
|000020a0| 09 69 66 20 28 67 47 72 | 6f 75 70 49 6e 66 6f 20 |.if (gGr|oupInfo |
|000020b0| 3d 3d 20 6e 69 6c 29 20 | 72 65 74 75 72 6e 3b 0d |== nil) |return;.|
|000020c0| 09 4d 79 53 65 74 48 61 | 6e 64 6c 65 53 69 7a 65 |.MySetHa|ndleSize|
|000020d0| 28 67 47 72 6f 75 70 49 | 6e 66 6f 2c 20 30 29 3b |(gGroupI|nfo, 0);|
|000020e0| 0d 09 67 4e 75 6d 47 72 | 6f 75 70 49 6e 66 6f 20 |..gNumGr|oupInfo |
|000020f0| 3d 20 30 3b 0d 09 4d 79 | 53 65 74 48 61 6e 64 6c |= 0;..My|SetHandl|
|00002100| 65 53 69 7a 65 28 67 41 | 72 74 69 63 6c 65 49 6e |eSize(gA|rticleIn|
|00002110| 66 6f 2c 20 30 29 3b 0d | 09 67 4e 75 6d 41 72 74 |fo, 0);.|.gNumArt|
|00002120| 69 63 6c 65 49 6e 66 6f | 20 3d 20 30 3b 0d 09 4d |icleInfo| = 0;..M|
|00002130| 79 53 65 74 48 61 6e 64 | 6c 65 53 69 7a 65 28 67 |ySetHand|leSize(g|
|00002140| 53 74 72 69 6e 67 73 2c | 20 30 29 3b 0d 09 67 53 |Strings,| 0);..gS|
|00002150| 74 72 69 6e 67 73 55 73 | 65 64 20 3d 20 67 53 74 |tringsUs|ed = gSt|
|00002160| 72 69 6e 67 73 41 6c 6c | 6f 63 61 74 65 64 20 3d |ringsAll|ocated =|
|00002170| 20 30 3b 0d 09 67 43 61 | 63 68 65 44 69 72 74 79 | 0;..gCa|cheDirty|
|00002180| 20 3d 20 74 72 75 65 3b | 0d 7d 0d 0d 0d 0d 2f 2a | = true;|.}..../*|
|00002190| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 09 57 72 |--------|----..Wr|
|000021e0| 69 74 65 41 72 74 69 63 | 6c 65 43 61 63 68 65 20 |iteArtic|leCache |
|000021f0| 0d 09 0d 09 57 72 69 74 | 65 20 74 68 65 20 61 72 |....Writ|e the ar|
|00002200| 74 69 63 6c 65 20 63 61 | 63 68 65 20 74 6f 20 74 |ticle ca|che to t|
|00002210| 68 65 20 70 72 65 66 73 | 20 66 69 6c 65 2e 0d 09 |he prefs| file...|
|00002220| 0d 09 45 6e 74 72 79 3a | 09 6e 65 77 73 53 65 72 |..Entry:|.newsSer|
|00002230| 76 65 72 41 74 53 74 61 | 72 74 75 70 20 3d 20 6e |verAtSta|rtup = n|
|00002240| 65 77 73 20 73 65 72 76 | 65 72 20 6e 61 6d 65 20 |ews serv|er name |
|00002250| 61 74 20 73 74 61 72 74 | 75 70 2e 0d 09 09 09 0d |at start|up......|
|00002260| 09 45 78 69 74 3a 09 66 | 75 6e 63 74 69 6f 6e 20 |.Exit:.f|unction |
|00002270| 72 65 73 75 6c 74 20 3d | 20 65 72 72 6f 72 20 63 |result =| error c|
|00002280| 6f 64 65 2e 0d 09 0d 09 | 54 68 69 73 20 66 75 6e |ode.....|This fun|
|00002290| 63 74 69 6f 6e 20 6d 75 | 73 74 20 62 65 20 63 61 |ction mu|st be ca|
|000022a0| 6c 6c 65 64 20 64 75 72 | 69 6e 67 20 74 65 72 6d |lled dur|ing term|
|000022b0| 69 6e 61 74 69 6f 6e 2c | 20 77 68 65 6e 20 74 68 |ination,| when th|
|000022c0| 65 20 70 72 65 66 73 20 | 66 69 6c 65 0d 09 69 73 |e prefs |file..is|
|000022d0| 20 77 72 69 74 74 65 6e | 2e 0d 2d 2d 2d 2d 2d 2d | written|..------|
|000022e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000022f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002300| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002310| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002320| 2d 2d 2d 2d 2d 2d 2a 2f | 0d 0d 4f 53 45 72 72 20 |------*/|..OSErr |
|00002330| 57 72 69 74 65 41 72 74 | 69 63 6c 65 43 61 63 68 |WriteArt|icleCach|
|00002340| 65 20 28 53 74 72 32 35 | 35 20 6e 65 77 73 53 65 |e (Str25|5 newsSe|
|00002350| 72 76 65 72 41 74 53 74 | 61 72 74 75 70 29 0d 7b |rverAtSt|artup).{|
|00002360| 0d 09 4f 53 45 72 72 20 | 65 72 72 20 3d 20 6e 6f |..OSErr |err = no|
|00002370| 45 72 72 3b 0d 09 0d 09 | 4d 79 49 43 52 65 61 64 |Err;....|MyICRead|
|00002380| 53 68 61 72 65 64 50 72 | 65 66 73 28 6b 49 43 4e |SharedPr|efs(kICN|
|00002390| 4e 54 50 48 6f 73 74 29 | 3b 0d 0d 09 69 66 20 28 |NTPHost)|;...if (|
|000023a0| 21 67 43 61 63 68 65 44 | 69 72 74 79 29 20 72 65 |!gCacheD|irty) re|
|000023b0| 74 75 72 6e 20 6e 6f 45 | 72 72 3b 0d 09 0d 09 69 |turn noE|rr;....i|
|000023c0| 66 20 28 67 47 72 6f 75 | 70 49 6e 66 6f 20 3d 3d |f (gGrou|pInfo ==|
|000023d0| 20 6e 69 6c 29 20 7b 0d | 09 09 65 72 72 20 3d 20 | nil) {.|..err = |
|000023e0| 4d 79 4e 65 77 48 61 6e | 64 6c 65 28 30 2c 20 26 |MyNewHan|dle(0, &|
|000023f0| 67 47 72 6f 75 70 49 6e | 66 6f 29 3b 0d 09 09 69 |gGroupIn|fo);...i|
|00002400| 66 20 28 65 72 72 20 21 | 3d 20 6e 6f 45 72 72 29 |f (err !|= noErr)|
|00002410| 20 72 65 74 75 72 6e 20 | 65 72 72 3b 0d 09 09 65 | return |err;...e|
|00002420| 72 72 20 3d 20 4d 79 4e | 65 77 48 61 6e 64 6c 65 |rr = MyN|ewHandle|
|00002430| 28 30 2c 20 26 67 41 72 | 74 69 63 6c 65 49 6e 66 |(0, &gAr|ticleInf|
|00002440| 6f 29 3b 0d 09 09 69 66 | 20 28 65 72 72 20 21 3d |o);...if| (err !=|
|00002450| 20 6e 6f 45 72 72 29 20 | 72 65 74 75 72 6e 20 65 | noErr) |return e|
|00002460| 72 72 3b 0d 09 09 65 72 | 72 20 3d 20 4d 79 4e 65 |rr;...er|r = MyNe|
|00002470| 77 48 61 6e 64 6c 65 28 | 30 2c 20 26 67 53 74 72 |wHandle(|0, &gStr|
|00002480| 69 6e 67 73 29 3b 0d 09 | 09 69 66 20 28 65 72 72 |ings);..|.if (err|
|00002490| 20 21 3d 20 6e 6f 45 72 | 72 29 20 72 65 74 75 72 | != noEr|r) retur|
|000024a0| 6e 20 65 72 72 3b 0d 09 | 7d 20 65 6c 73 65 20 69 |n err;..|} else i|
|000024b0| 66 20 28 21 45 71 75 61 | 6c 53 74 72 69 6e 67 28 |f (!Equa|lString(|
|000024c0| 67 50 72 65 66 73 2e 6e | 65 77 73 53 65 72 76 65 |gPrefs.n|ewsServe|
|000024d0| 72 4e 61 6d 65 2c 20 6e | 65 77 73 53 65 72 76 65 |rName, n|ewsServe|
|000024e0| 72 41 74 53 74 61 72 74 | 75 70 2c 20 66 61 6c 73 |rAtStart|up, fals|
|000024f0| 65 2c 20 74 72 75 65 29 | 29 20 7b 0d 09 09 46 6c |e, true)|) {...Fl|
|00002500| 75 73 68 41 72 74 69 63 | 6c 65 43 61 63 68 65 28 |ushArtic|leCache(|
|00002510| 29 3b 0d 09 7d 20 65 6c | 73 65 20 7b 0d 09 09 43 |);..} el|se {...C|
|00002520| 6f 6d 70 61 63 74 41 72 | 74 69 63 6c 65 43 61 63 |ompactAr|ticleCac|
|00002530| 68 65 28 29 3b 0d 09 7d | 0d 09 0d 09 2f 2a 20 52 |he();..}|..../* R|
|00002540| 65 77 72 69 74 65 20 74 | 68 65 20 74 68 72 65 65 |ewrite t|he three|
|00002550| 20 63 61 63 68 65 20 72 | 65 73 6f 75 72 63 65 73 | cache r|esources|
|00002560| 20 6f 6e 20 74 68 65 20 | 70 72 65 66 73 20 66 69 | on the |prefs fi|
|00002570| 6c 65 2e 20 2a 2f 0d 09 | 0d 09 65 72 72 20 3d 20 |le. */..|..err = |
|00002580| 4d 79 52 65 70 6c 61 63 | 65 52 65 73 6f 75 72 63 |MyReplac|eResourc|
|00002590| 65 28 67 47 72 6f 75 70 | 49 6e 66 6f 2c 20 6b 43 |e(gGroup|Info, kC|
|000025a0| 61 63 68 65 52 65 73 6f | 75 72 63 65 54 79 70 65 |acheReso|urceType|
|000025b0| 2c 20 6b 43 61 63 68 65 | 47 72 6f 75 70 41 72 72 |, kCache|GroupArr|
|000025c0| 61 79 49 44 2c 20 22 5c | 70 22 29 3b 0d 09 69 66 |ayID, "\|p");..if|
|000025d0| 20 28 65 72 72 20 21 3d | 20 6e 6f 45 72 72 29 20 | (err !=| noErr) |
|000025e0| 72 65 74 75 72 6e 20 65 | 72 72 3b 0d 09 65 72 72 |return e|rr;..err|
|000025f0| 20 3d 20 4d 79 52 65 70 | 6c 61 63 65 52 65 73 6f | = MyRep|laceReso|
|00002600| 75 72 63 65 28 67 41 72 | 74 69 63 6c 65 49 6e 66 |urce(gAr|ticleInf|
|00002610| 6f 2c 20 6b 43 61 63 68 | 65 52 65 73 6f 75 72 63 |o, kCach|eResourc|
|00002620| 65 54 79 70 65 2c 20 6b | 43 61 63 68 65 41 72 74 |eType, k|CacheArt|
|00002630| 69 63 6c 65 41 72 72 61 | 79 49 44 2c 20 22 5c 70 |icleArra|yID, "\p|
|00002640| 22 29 3b 0d 09 69 66 20 | 28 65 72 72 20 21 3d 20 |");..if |(err != |
|00002650| 6e 6f 45 72 72 29 20 72 | 65 74 75 72 6e 20 65 72 |noErr) r|eturn er|
|00002660| 72 3b 0d 09 65 72 72 20 | 3d 20 4d 79 52 65 70 6c |r;..err |= MyRepl|
|00002670| 61 63 65 52 65 73 6f 75 | 72 63 65 28 67 53 74 72 |aceResou|rce(gStr|
|00002680| 69 6e 67 73 2c 20 6b 43 | 61 63 68 65 52 65 73 6f |ings, kC|acheReso|
|00002690| 75 72 63 65 54 79 70 65 | 2c 20 6b 43 61 63 68 65 |urceType|, kCache|
|000026a0| 53 74 72 69 6e 67 73 42 | 6c 6f 63 6b 49 44 2c 20 |StringsB|lockID, |
|000026b0| 22 5c 70 22 29 3b 0d 09 | 69 66 20 28 65 72 72 20 |"\p");..|if (err |
|000026c0| 21 3d 20 6e 6f 45 72 72 | 29 20 72 65 74 75 72 6e |!= noErr|) return|
|000026d0| 20 65 72 72 3b 0d 09 72 | 65 74 75 72 6e 20 6e 6f | err;..r|eturn no|
|000026e0| 45 72 72 3b 0d 7d 0d 0d | 0d 0d 2f 2a 2d 2d 2d 2d |Err;.}..|../*----|
|000026f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002700| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002730| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 09 41 64 64 43 61 63 |--------|..AddCac|
|00002740| 68 65 64 41 72 74 69 63 | 6c 65 20 0d 09 0d 09 41 |hedArtic|le ....A|
|00002750| 64 64 20 61 6e 20 61 72 | 74 69 63 6c 65 20 74 6f |dd an ar|ticle to|
|00002760| 20 74 68 65 20 63 61 63 | 68 65 2e 0d 09 0d 09 45 | the cac|he.....E|
|00002770| 6e 74 72 79 3a 09 67 72 | 6f 75 70 4e 61 6d 65 20 |ntry:.gr|oupName |
|00002780| 3d 20 67 72 6f 75 70 20 | 6e 61 6d 65 2e 0d 09 09 |= group |name....|
|00002790| 09 6e 75 6d 62 65 72 20 | 3d 20 61 72 74 69 63 6c |.number |= articl|
|000027a0| 65 20 6e 75 6d 62 65 72 | 2e 0d 09 09 09 73 75 62 |e number|.....sub|
|000027b0| 6a 65 63 74 20 3d 20 73 | 75 62 6a 65 63 74 2e 0d |ject = s|ubject..|
|000027c0| 09 09 09 61 75 74 68 6f | 72 20 3d 20 61 75 74 68 |...autho|r = auth|
|000027d0| 6f 72 2e 0d 09 09 09 0d | 09 45 78 69 74 3a 09 66 |or......|.Exit:.f|
|000027e0| 75 6e 63 74 69 6f 6e 20 | 72 65 73 75 6c 74 20 3d |unction |result =|
|000027f0| 20 65 72 72 6f 72 20 63 | 6f 64 65 2e 0d 2d 2d 2d | error c|ode..---|
|00002800| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002810| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002820| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002830| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002840| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2a 2f 0d 0d 4f 53 45 |--------|-*/..OSE|
|00002850| 72 72 20 41 64 64 43 61 | 63 68 65 64 41 72 74 69 |rr AddCa|chedArti|
|00002860| 63 6c 65 20 28 63 68 61 | 72 20 2a 67 72 6f 75 70 |cle (cha|r *group|
|00002870| 4e 61 6d 65 2c 20 6c 6f | 6e 67 20 6e 75 6d 62 65 |Name, lo|ng numbe|
|00002880| 72 2c 20 63 68 61 72 20 | 2a 73 75 62 6a 65 63 74 |r, char |*subject|
|00002890| 2c 20 63 68 61 72 20 2a | 61 75 74 68 6f 72 29 0d |, char *|author).|
|000028a0| 7b 0d 09 6c 6f 6e 67 20 | 69 3b 0d 09 54 41 72 74 |{..long |i;..TArt|
|000028b0| 69 63 6c 65 49 6e 66 6f | 20 2a 70 3b 0d 09 54 47 |icleInfo| *p;..TG|
|000028c0| 72 6f 75 70 49 6e 66 6f | 20 2a 71 3b 0d 09 6c 6f |roupInfo| *q;..lo|
|000028d0| 6e 67 20 69 6e 64 65 78 | 20 3d 20 2d 31 2c 20 67 |ng index| = -1, g|
|000028e0| 72 6f 75 70 49 6e 64 65 | 78 2c 20 73 75 62 6a 65 |roupInde|x, subje|
|000028f0| 63 74 4f 66 66 73 65 74 | 2c 20 61 75 74 68 6f 72 |ctOffset|, author|
|00002900| 4f 66 66 73 65 74 2c 20 | 6f 66 66 73 65 74 3b 0d |Offset, |offset;.|
|00002910| 09 4f 53 45 72 72 20 65 | 72 72 20 3d 20 6e 6f 45 |.OSErr e|rr = noE|
|00002920| 72 72 3b 0d 09 73 68 6f | 72 74 20 6c 65 6e 2c 20 |rr;..sho|rt len, |
|00002930| 73 4c 65 6e 2c 20 61 4c | 65 6e 3b 0d 09 0d 09 69 |sLen, aL|en;....i|
|00002940| 66 20 28 67 47 72 6f 75 | 70 49 6e 66 6f 20 3d 3d |f (gGrou|pInfo ==|
|00002950| 20 6e 69 6c 29 20 72 65 | 74 75 72 6e 20 6e 6f 45 | nil) re|turn noE|
|00002960| 72 72 3b 0d 0d 09 2f 2a | 20 43 68 65 63 6b 20 74 |rr;.../*| Check t|
|00002970| 6f 20 73 65 65 20 69 66 | 20 74 68 69 73 20 61 72 |o see if| this ar|
|00002980| 74 69 63 6c 65 20 69 73 | 20 61 6c 72 65 61 64 79 |ticle is| already|
|00002990| 20 69 6e 20 74 68 65 20 | 63 61 63 68 65 2e 0d 09 | in the |cache...|
|000029a0| 20 20 20 41 6c 73 6f 20 | 67 65 74 20 69 6e 64 65 | Also |get inde|
|000029b0| 78 20 3d 20 69 6e 64 65 | 78 20 69 6e 20 61 72 74 |x = inde|x in art|
|000029c0| 69 63 6c 65 20 69 6e 66 | 6f 20 61 72 72 61 79 20 |icle inf|o array |
|000029d0| 6f 66 20 61 20 66 72 65 | 65 20 65 6e 74 72 79 2c |of a fre|e entry,|
|000029e0| 20 6f 72 0d 09 20 20 20 | 2d 31 20 69 66 20 6e 6f | or.. |-1 if no|
|000029f0| 6e 65 2e 20 2a 2f 0d 0d | 09 66 6f 72 20 28 69 20 |ne. */..|.for (i |
|00002a00| 3d 20 30 2c 20 70 20 3d | 20 2a 67 41 72 74 69 63 |= 0, p =| *gArtic|
|00002a10| 6c 65 49 6e 66 6f 3b 20 | 69 20 3c 20 67 4e 75 6d |leInfo; |i < gNum|
|00002a20| 41 72 74 69 63 6c 65 49 | 6e 66 6f 3b 20 69 2b 2b |ArticleI|nfo; i++|
|00002a30| 2c 20 70 2b 2b 29 20 7b | 0d 09 09 69 66 20 28 70 |, p++) {|...if (p|
|00002a40| 2d 3e 67 72 6f 75 70 49 | 6e 64 65 78 20 3e 3d 20 |->groupI|ndex >= |
|00002a50| 30 29 20 7b 0d 09 09 09 | 69 66 20 28 6e 75 6d 62 |0) {....|if (numb|
|00002a60| 65 72 20 3d 3d 20 70 2d | 3e 6e 75 6d 62 65 72 20 |er == p-|>number |
|00002a70| 26 26 0d 09 09 09 09 73 | 74 72 63 6d 70 28 67 72 |&&.....s|trcmp(gr|
|00002a80| 6f 75 70 4e 61 6d 65 2c | 20 2a 67 53 74 72 69 6e |oupName,| *gStrin|
|00002a90| 67 73 20 2b 20 28 2a 67 | 47 72 6f 75 70 49 6e 66 |gs + (*g|GroupInf|
|00002aa0| 6f 29 5b 70 2d 3e 67 72 | 6f 75 70 49 6e 64 65 78 |o)[p->gr|oupIndex|
|00002ab0| 5d 2e 6f 66 66 73 65 74 | 29 20 3d 3d 20 30 29 20 |].offset|) == 0) |
|00002ac0| 0d 09 09 09 09 09 72 65 | 74 75 72 6e 20 6e 6f 45 |......re|turn noE|
|00002ad0| 72 72 3b 0d 09 09 7d 20 | 65 6c 73 65 20 7b 0d 09 |rr;...} |else {..|
|00002ae0| 09 09 69 6e 64 65 78 20 | 3d 20 69 3b 0d 09 09 7d |..index |= i;...}|
|00002af0| 0d 09 7d 0d 09 0d 09 2f | 2a 20 49 66 20 6e 65 63 |..}..../|* If nec|
|00002b00| 65 73 73 61 72 79 2c 20 | 61 64 64 20 74 68 65 20 |essary, |add the |
|00002b10| 67 72 6f 75 70 20 6e 61 | 6d 65 20 74 6f 20 74 68 |group na|me to th|
|00002b20| 65 20 73 74 72 69 6e 67 | 73 20 62 6c 6f 63 6b 20 |e string|s block |
|00002b30| 61 6e 64 20 74 6f 20 74 | 68 65 20 67 72 6f 75 70 |and to t|he group|
|00002b40| 20 69 6e 66 6f 20 61 72 | 72 61 79 2e 20 2a 2f 0d | info ar|ray. */.|
|00002b50| 09 0d 09 66 6f 72 20 28 | 67 72 6f 75 70 49 6e 64 |...for (|groupInd|
|00002b60| 65 78 20 3d 20 30 2c 20 | 71 20 3d 20 2a 67 47 72 |ex = 0, |q = *gGr|
|00002b70| 6f 75 70 49 6e 66 6f 3b | 20 67 72 6f 75 70 49 6e |oupInfo;| groupIn|
|00002b80| 64 65 78 20 3c 20 67 4e | 75 6d 47 72 6f 75 70 49 |dex < gN|umGroupI|
|00002b90| 6e 66 6f 3b 20 67 72 6f | 75 70 49 6e 64 65 78 2b |nfo; gro|upIndex+|
|00002ba0| 2b 2c 20 71 2b 2b 29 20 | 7b 0d 09 09 69 66 20 28 |+, q++) |{...if (|
|00002bb0| 73 74 72 63 6d 70 28 67 | 72 6f 75 70 4e 61 6d 65 |strcmp(g|roupName|
|00002bc0| 2c 20 2a 67 53 74 72 69 | 6e 67 73 20 2b 20 71 2d |, *gStri|ngs + q-|
|00002bd0| 3e 6f 66 66 73 65 74 29 | 20 3d 3d 20 30 29 20 62 |>offset)| == 0) b|
|00002be0| 72 65 61 6b 3b 0d 09 7d | 0d 09 69 66 20 28 67 72 |reak;..}|..if (gr|
|00002bf0| 6f 75 70 49 6e 64 65 78 | 20 3e 3d 20 67 4e 75 6d |oupIndex| >= gNum|
|00002c00| 47 72 6f 75 70 49 6e 66 | 6f 29 20 7b 0d 09 09 6c |GroupInf|o) {...l|
|00002c10| 65 6e 20 3d 20 73 74 72 | 6c 65 6e 28 67 72 6f 75 |en = str|len(grou|
|00002c20| 70 4e 61 6d 65 29 3b 0d | 09 09 69 66 20 28 67 53 |pName);.|..if (gS|
|00002c30| 74 72 69 6e 67 73 55 73 | 65 64 20 2b 20 6c 65 6e |tringsUs|ed + len|
|00002c40| 20 2b 20 31 20 3e 20 67 | 53 74 72 69 6e 67 73 41 | + 1 > g|StringsA|
|00002c50| 6c 6c 6f 63 61 74 65 64 | 29 20 7b 0d 09 09 09 65 |llocated|) {....e|
|00002c60| 72 72 20 3d 20 4d 79 53 | 65 74 48 61 6e 64 6c 65 |rr = MyS|etHandle|
|00002c70| 53 69 7a 65 28 67 53 74 | 72 69 6e 67 73 2c 20 67 |Size(gSt|rings, g|
|00002c80| 53 74 72 69 6e 67 73 41 | 6c 6c 6f 63 61 74 65 64 |StringsA|llocated|
|00002c90| 2b 31 30 30 30 29 3b 0d | 09 09 09 69 66 20 28 65 |+1000);.|...if (e|
|00002ca0| 72 72 20 21 3d 20 6e 6f | 45 72 72 29 20 72 65 74 |rr != no|Err) ret|
|00002cb0| 75 72 6e 20 65 72 72 3b | 0d 09 09 09 67 53 74 72 |urn err;|....gStr|
|00002cc0| 69 6e 67 73 41 6c 6c 6f | 63 61 74 65 64 20 2b 3d |ingsAllo|cated +=|
|00002cd0| 20 31 30 30 30 3b 0d 09 | 09 7d 0d 09 09 73 74 72 | 1000;..|.}...str|
|00002ce0| 63 70 79 28 2a 67 53 74 | 72 69 6e 67 73 20 2b 20 |cpy(*gSt|rings + |
|00002cf0| 67 53 74 72 69 6e 67 73 | 55 73 65 64 2c 20 67 72 |gStrings|Used, gr|
|00002d00| 6f 75 70 4e 61 6d 65 29 | 3b 0d 09 09 6f 66 66 73 |oupName)|;...offs|
|00002d10| 65 74 20 3d 20 67 53 74 | 72 69 6e 67 73 55 73 65 |et = gSt|ringsUse|
|00002d20| 64 3b 0d 09 09 67 53 74 | 72 69 6e 67 73 55 73 65 |d;...gSt|ringsUse|
|00002d30| 64 20 2b 3d 20 6c 65 6e | 2b 31 3b 0d 09 09 65 72 |d += len|+1;...er|
|00002d40| 72 20 3d 20 4d 79 53 65 | 74 48 61 6e 64 6c 65 53 |r = MySe|tHandleS|
|00002d50| 69 7a 65 28 67 47 72 6f | 75 70 49 6e 66 6f 2c 20 |ize(gGro|upInfo, |
|00002d60| 28 67 4e 75 6d 47 72 6f | 75 70 49 6e 66 6f 2b 31 |(gNumGro|upInfo+1|
|00002d70| 29 20 2a 20 73 69 7a 65 | 6f 66 28 54 47 72 6f 75 |) * size|of(TGrou|
|00002d80| 70 49 6e 66 6f 29 29 3b | 0d 09 09 69 66 20 28 65 |pInfo));|...if (e|
|00002d90| 72 72 20 21 3d 20 6e 6f | 45 72 72 29 20 72 65 74 |rr != no|Err) ret|
|00002da0| 75 72 6e 20 65 72 72 3b | 0d 09 09 67 72 6f 75 70 |urn err;|...group|
|00002db0| 49 6e 64 65 78 20 3d 20 | 67 4e 75 6d 47 72 6f 75 |Index = |gNumGrou|
|00002dc0| 70 49 6e 66 6f 3b 0d 09 | 09 71 20 3d 20 26 28 2a |pInfo;..|.q = &(*|
|00002dd0| 67 47 72 6f 75 70 49 6e | 66 6f 29 5b 67 72 6f 75 |gGroupIn|fo)[grou|
|00002de0| 70 49 6e 64 65 78 5d 3b | 0d 09 09 71 2d 3e 6f 66 |pIndex];|...q->of|
|00002df0| 66 73 65 74 20 3d 20 6f | 66 66 73 65 74 3b 0d 09 |fset = o|ffset;..|
|00002e00| 09 71 2d 3e 6e 75 6d 43 | 61 63 68 65 64 20 3d 20 |.q->numC|ached = |
|00002e10| 30 3b 0d 09 09 67 4e 75 | 6d 47 72 6f 75 70 49 6e |0;...gNu|mGroupIn|
|00002e20| 66 6f 2b 2b 3b 0d 09 7d | 0d 09 0d 09 2f 2a 20 41 |fo++;..}|..../* A|
|00002e30| 64 64 20 74 68 65 20 73 | 75 62 6a 65 63 74 20 61 |dd the s|ubject a|
|00002e40| 6e 64 20 61 75 74 68 6f | 72 20 73 74 72 69 6e 67 |nd autho|r string|
|00002e50| 73 20 74 6f 20 74 68 65 | 20 73 74 72 69 6e 67 73 |s to the| strings|
|00002e60| 20 62 6c 6f 63 6b 2e 20 | 2a 2f 0d 09 0d 09 73 4c | block. |*/....sL|
|00002e70| 65 6e 20 3d 20 73 74 72 | 6c 65 6e 28 73 75 62 6a |en = str|len(subj|
|00002e80| 65 63 74 29 3b 0d 09 61 | 4c 65 6e 20 3d 20 73 74 |ect);..a|Len = st|
|00002e90| 72 6c 65 6e 28 61 75 74 | 68 6f 72 29 3b 0d 09 69 |rlen(aut|hor);..i|
|00002ea0| 66 20 28 67 53 74 72 69 | 6e 67 73 55 73 65 64 20 |f (gStri|ngsUsed |
|00002eb0| 2b 20 73 4c 65 6e 20 2b | 20 61 4c 65 6e 20 2b 20 |+ sLen +| aLen + |
|00002ec0| 32 20 3e 20 67 53 74 72 | 69 6e 67 73 41 6c 6c 6f |2 > gStr|ingsAllo|
|00002ed0| 63 61 74 65 64 29 20 7b | 0d 09 09 65 72 72 20 3d |cated) {|...err =|
|00002ee0| 20 4d 79 53 65 74 48 61 | 6e 64 6c 65 53 69 7a 65 | MySetHa|ndleSize|
|00002ef0| 28 67 53 74 72 69 6e 67 | 73 2c 20 67 53 74 72 69 |(gString|s, gStri|
|00002f00| 6e 67 73 41 6c 6c 6f 63 | 61 74 65 64 2b 31 30 30 |ngsAlloc|ated+100|
|00002f10| 30 29 3b 0d 09 09 69 66 | 20 28 65 72 72 20 21 3d |0);...if| (err !=|
|00002f20| 20 6e 6f 45 72 72 29 20 | 72 65 74 75 72 6e 20 65 | noErr) |return e|
|00002f30| 72 72 3b 0d 09 09 67 53 | 74 72 69 6e 67 73 41 6c |rr;...gS|tringsAl|
|00002f40| 6c 6f 63 61 74 65 64 20 | 2b 3d 20 31 30 30 30 3b |located |+= 1000;|
|00002f50| 0d 09 7d 0d 09 73 74 72 | 63 70 79 28 2a 67 53 74 |..}..str|cpy(*gSt|
|00002f60| 72 69 6e 67 73 20 2b 20 | 67 53 74 72 69 6e 67 73 |rings + |gStrings|
|00002f70| 55 73 65 64 2c 20 73 75 | 62 6a 65 63 74 29 3b 0d |Used, su|bject);.|
|00002f80| 09 73 75 62 6a 65 63 74 | 4f 66 66 73 65 74 20 3d |.subject|Offset =|
|00002f90| 20 67 53 74 72 69 6e 67 | 73 55 73 65 64 3b 0d 09 | gString|sUsed;..|
|00002fa0| 67 53 74 72 69 6e 67 73 | 55 73 65 64 20 2b 3d 20 |gStrings|Used += |
|00002fb0| 73 4c 65 6e 2b 31 3b 0d | 09 6c 65 6e 20 3d 20 73 |sLen+1;.|.len = s|
|00002fc0| 74 72 6c 65 6e 28 61 75 | 74 68 6f 72 29 3b 0d 09 |trlen(au|thor);..|
|00002fd0| 73 74 72 63 70 79 28 2a | 67 53 74 72 69 6e 67 73 |strcpy(*|gStrings|
|00002fe0| 20 2b 20 67 53 74 72 69 | 6e 67 73 55 73 65 64 2c | + gStri|ngsUsed,|
|00002ff0| 20 61 75 74 68 6f 72 29 | 3b 0d 09 61 75 74 68 6f | author)|;..autho|
|00003000| 72 4f 66 66 73 65 74 20 | 3d 20 67 53 74 72 69 6e |rOffset |= gStrin|
|00003010| 67 73 55 73 65 64 3b 0d | 09 67 53 74 72 69 6e 67 |gsUsed;.|.gString|
|00003020| 73 55 73 65 64 20 2b 3d | 20 61 4c 65 6e 2b 31 3b |sUsed +=| aLen+1;|
|00003030| 0d 09 0d 09 2f 2a 20 41 | 64 64 20 74 68 65 20 6e |..../* A|dd the n|
|00003040| 65 77 20 63 61 63 68 65 | 20 65 6e 74 72 79 20 74 |ew cache| entry t|
|00003050| 6f 20 74 68 65 20 61 72 | 74 69 63 6c 65 20 69 6e |o the ar|ticle in|
|00003060| 66 6f 20 61 72 72 61 79 | 2e 20 2a 2f 0d 09 0d 09 |fo array|. */....|
|00003070| 69 66 20 28 69 6e 64 65 | 78 20 3d 3d 20 2d 31 29 |if (inde|x == -1)|
|00003080| 20 7b 0d 09 09 65 72 72 | 20 3d 20 4d 79 53 65 74 | {...err| = MySet|
|00003090| 48 61 6e 64 6c 65 53 69 | 7a 65 28 67 41 72 74 69 |HandleSi|ze(gArti|
|000030a0| 63 6c 65 49 6e 66 6f 2c | 20 28 67 4e 75 6d 41 72 |cleInfo,| (gNumAr|
|000030b0| 74 69 63 6c 65 49 6e 66 | 6f 2b 31 29 20 2a 20 73 |ticleInf|o+1) * s|
|000030c0| 69 7a 65 6f 66 28 54 41 | 72 74 69 63 6c 65 49 6e |izeof(TA|rticleIn|
|000030d0| 66 6f 29 29 3b 0d 09 09 | 69 66 20 28 65 72 72 20 |fo));...|if (err |
|000030e0| 21 3d 20 6e 6f 45 72 72 | 29 20 72 65 74 75 72 6e |!= noErr|) return|
|000030f0| 20 65 72 72 3b 0d 09 09 | 69 6e 64 65 78 20 3d 20 | err;...|index = |
|00003100| 67 4e 75 6d 41 72 74 69 | 63 6c 65 49 6e 66 6f 3b |gNumArti|cleInfo;|
|00003110| 0d 09 09 67 4e 75 6d 41 | 72 74 69 63 6c 65 49 6e |...gNumA|rticleIn|
|00003120| 66 6f 2b 2b 3b 0d 09 7d | 0d 09 70 20 3d 20 26 28 |fo++;..}|..p = &(|
|00003130| 2a 67 41 72 74 69 63 6c | 65 49 6e 66 6f 29 5b 69 |*gArticl|eInfo)[i|
|00003140| 6e 64 65 78 5d 3b 0d 09 | 70 2d 3e 67 72 6f 75 70 |ndex];..|p->group|
|00003150| 49 6e 64 65 78 20 3d 20 | 67 72 6f 75 70 49 6e 64 |Index = |groupInd|
|00003160| 65 78 3b 0d 09 70 2d 3e | 6e 75 6d 62 65 72 20 3d |ex;..p->|number =|
|00003170| 20 6e 75 6d 62 65 72 3b | 0d 09 70 2d 3e 73 75 62 | number;|..p->sub|
|00003180| 6a 65 63 74 4f 66 66 73 | 65 74 20 3d 20 73 75 62 |jectOffs|et = sub|
|00003190| 6a 65 63 74 4f 66 66 73 | 65 74 3b 0d 09 70 2d 3e |jectOffs|et;..p->|
|000031a0| 61 75 74 68 6f 72 4f 66 | 66 73 65 74 20 3d 20 61 |authorOf|fset = a|
|000031b0| 75 74 68 6f 72 4f 66 66 | 73 65 74 3b 0d 09 47 65 |uthorOff|set;..Ge|
|000031c0| 74 44 61 74 65 54 69 6d | 65 28 26 70 2d 3e 63 72 |tDateTim|e(&p->cr|
|000031d0| 65 61 74 69 6f 6e 44 61 | 74 65 54 69 6d 65 29 3b |eationDa|teTime);|
|000031e0| 0d 09 0d 09 2f 2a 20 49 | 6e 63 72 65 6d 65 6e 74 |..../* I|ncrement|
|000031f0| 20 74 68 65 20 63 6f 75 | 6e 74 65 72 20 69 6e 20 | the cou|nter in |
|00003200| 74 68 65 20 67 72 6f 75 | 70 20 69 6e 66 6f 20 61 |the grou|p info a|
|00003210| 72 72 61 79 2e 20 2a 2f | 0d 09 0d 09 28 2a 67 47 |rray. */|....(*gG|
|00003220| 72 6f 75 70 49 6e 66 6f | 29 5b 67 72 6f 75 70 49 |roupInfo|)[groupI|
|00003230| 6e 64 65 78 5d 2e 6e 75 | 6d 43 61 63 68 65 64 2b |ndex].nu|mCached+|
|00003240| 2b 3b 0d 09 0d 09 67 43 | 61 63 68 65 44 69 72 74 |+;....gC|acheDirt|
|00003250| 79 20 3d 20 74 72 75 65 | 3b 0d 09 0d 09 72 65 74 |y = true|;....ret|
|00003260| 75 72 6e 20 6e 6f 45 72 | 72 3b 0d 7d 0d 0d 0d 0d |urn noEr|r;.}....|
|00003270| 2f 2a 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/*------|--------|
|00003280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 09 |--------|------..|
|000032c0| 44 65 6c 65 74 65 43 61 | 63 68 65 64 41 72 74 69 |DeleteCa|chedArti|
|000032d0| 63 6c 65 20 0d 09 0d 09 | 52 65 6d 6f 76 65 20 61 |cle ....|Remove a|
|000032e0| 6e 20 61 72 74 69 63 6c | 65 20 66 72 6f 6d 20 74 |n articl|e from t|
|000032f0| 68 65 20 63 61 63 68 65 | 2e 0d 09 0d 09 45 6e 74 |he cache|.....Ent|
|00003300| 72 79 3a 09 67 72 6f 75 | 70 4e 61 6d 65 20 3d 20 |ry:.grou|pName = |
|00003310| 67 72 6f 75 70 20 6e 61 | 6d 65 2e 0d 09 09 09 6e |group na|me.....n|
|00003320| 75 6d 62 65 72 20 3d 20 | 61 72 74 69 63 6c 65 20 |umber = |article |
|00003330| 6e 75 6d 62 65 72 2e 0d | 09 09 09 0d 09 45 78 69 |number..|.....Exi|
|00003340| 74 3a 09 66 75 6e 63 74 | 69 6f 6e 20 72 65 73 75 |t:.funct|ion resu|
|00003350| 6c 74 20 3d 20 65 72 72 | 6f 72 20 63 6f 64 65 2e |lt = err|or code.|
|00003360| 0d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.-------|--------|
|00003370| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003380| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003390| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000033a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2a 2f 0d |--------|-----*/.|
|000033b0| 0d 4f 53 45 72 72 20 44 | 65 6c 65 74 65 43 61 63 |.OSErr D|eleteCac|
|000033c0| 68 65 64 41 72 74 69 63 | 6c 65 20 28 63 68 61 72 |hedArtic|le (char|
|000033d0| 20 2a 67 72 6f 75 70 4e | 61 6d 65 2c 20 6c 6f 6e | *groupN|ame, lon|
|000033e0| 67 20 6e 75 6d 62 65 72 | 29 0d 7b 0d 09 6c 6f 6e |g number|).{..lon|
|000033f0| 67 20 67 72 6f 75 70 49 | 6e 64 65 78 2c 20 69 3b |g groupI|ndex, i;|
|00003400| 0d 09 54 47 72 6f 75 70 | 49 6e 66 6f 20 2a 71 3b |..TGroup|Info *q;|
|00003410| 0d 09 54 41 72 74 69 63 | 6c 65 49 6e 66 6f 20 2a |..TArtic|leInfo *|
|00003420| 70 3b 0d 0d 09 69 66 20 | 28 67 47 72 6f 75 70 49 |p;...if |(gGroupI|
|00003430| 6e 66 6f 20 3d 3d 20 6e | 69 6c 29 20 72 65 74 75 |nfo == n|il) retu|
|00003440| 72 6e 20 6e 6f 45 72 72 | 3b 0d 0d 09 66 6f 72 20 |rn noErr|;...for |
|00003450| 28 67 72 6f 75 70 49 6e | 64 65 78 20 3d 20 30 2c |(groupIn|dex = 0,|
|00003460| 20 71 20 3d 20 2a 67 47 | 72 6f 75 70 49 6e 66 6f | q = *gG|roupInfo|
|00003470| 3b 20 67 72 6f 75 70 49 | 6e 64 65 78 20 3c 20 67 |; groupI|ndex < g|
|00003480| 4e 75 6d 47 72 6f 75 70 | 49 6e 66 6f 3b 20 67 72 |NumGroup|Info; gr|
|00003490| 6f 75 70 49 6e 64 65 78 | 2b 2b 2c 20 71 2b 2b 29 |oupIndex|++, q++)|
|000034a0| 20 7b 0d 09 09 69 66 20 | 28 73 74 72 63 6d 70 28 | {...if |(strcmp(|
|000034b0| 67 72 6f 75 70 4e 61 6d | 65 2c 20 2a 67 53 74 72 |groupNam|e, *gStr|
|000034c0| 69 6e 67 73 20 2b 20 71 | 2d 3e 6f 66 66 73 65 74 |ings + q|->offset|
|000034d0| 29 20 3d 3d 20 30 29 20 | 62 72 65 61 6b 3b 0d 09 |) == 0) |break;..|
|000034e0| 7d 0d 09 69 66 20 28 67 | 72 6f 75 70 49 6e 64 65 |}..if (g|roupInde|
|000034f0| 78 20 3e 3d 20 67 4e 75 | 6d 47 72 6f 75 70 49 6e |x >= gNu|mGroupIn|
|00003500| 66 6f 29 20 72 65 74 75 | 72 6e 20 6e 6f 45 72 72 |fo) retu|rn noErr|
|00003510| 3b 0d 09 66 6f 72 20 28 | 69 20 3d 20 30 2c 20 70 |;..for (|i = 0, p|
|00003520| 20 3d 20 2a 67 41 72 74 | 69 63 6c 65 49 6e 66 6f | = *gArt|icleInfo|
|00003530| 3b 20 69 20 3c 20 67 4e | 75 6d 41 72 74 69 63 6c |; i < gN|umArticl|
|00003540| 65 49 6e 66 6f 3b 20 69 | 2b 2b 2c 20 70 2b 2b 29 |eInfo; i|++, p++)|
|00003550| 20 7b 0d 09 09 69 66 20 | 28 70 2d 3e 67 72 6f 75 | {...if |(p->grou|
|00003560| 70 49 6e 64 65 78 20 3d | 3d 20 67 72 6f 75 70 49 |pIndex =|= groupI|
|00003570| 6e 64 65 78 20 26 26 20 | 70 2d 3e 6e 75 6d 62 65 |ndex && |p->numbe|
|00003580| 72 20 3d 3d 20 6e 75 6d | 62 65 72 29 20 7b 0d 09 |r == num|ber) {..|
|00003590| 09 09 70 2d 3e 67 72 6f | 75 70 49 6e 64 65 78 20 |..p->gro|upIndex |
|000035a0| 3d 20 2d 31 3b 0d 09 09 | 09 28 2a 67 47 72 6f 75 |= -1;...|.(*gGrou|
|000035b0| 70 49 6e 66 6f 29 5b 67 | 72 6f 75 70 49 6e 64 65 |pInfo)[g|roupInde|
|000035c0| 78 5d 2e 6e 75 6d 43 61 | 63 68 65 64 2d 2d 3b 0d |x].numCa|ched--;.|
|000035d0| 09 09 09 67 43 61 63 68 | 65 44 69 72 74 79 20 3d |...gCach|eDirty =|
|000035e0| 20 74 72 75 65 3b 0d 09 | 09 09 72 65 74 75 72 6e | true;..|..return|
|000035f0| 20 6e 6f 45 72 72 3b 0d | 09 09 7d 0d 09 7d 0d 09 | noErr;.|..}..}..|
|00003600| 72 65 74 75 72 6e 20 6e | 6f 45 72 72 3b 0d 7d 0d |return n|oErr;.}.|
|00003610| 0d 0d 0d 2f 2a 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.../*---|--------|
|00003620| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003630| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003640| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003650| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003660| 2d 0d 09 43 6f 6d 70 61 | 72 65 41 72 74 69 63 6c |-..Compa|reArticl|
|00003670| 65 4e 75 6d 62 65 72 73 | 20 0d 09 0d 09 43 6f 6d |eNumbers| ....Com|
|00003680| 70 61 72 65 20 61 6e 20 | 61 72 74 69 63 6c 65 20 |pare an |article |
|00003690| 6e 75 6d 62 65 72 20 74 | 6f 20 74 68 65 20 61 72 |number t|o the ar|
|000036a0| 74 69 63 6c 65 20 6e 75 | 6d 62 65 72 20 69 6e 20 |ticle nu|mber in |
|000036b0| 61 20 54 53 75 62 6a 65 | 63 74 20 72 65 63 6f 72 |a TSubje|ct recor|
|000036c0| 64 2e 0d 09 0d 09 45 6e | 74 72 79 3a 09 2a 6e 75 |d.....En|try:.*nu|
|000036d0| 6d 62 65 72 20 3d 20 61 | 72 74 69 63 6c 65 20 6e |mber = a|rticle n|
|000036e0| 75 6d 62 65 72 2e 0d 09 | 09 09 78 20 3d 20 70 6f |umber...|..x = po|
|000036f0| 69 6e 74 65 72 20 74 6f | 20 54 53 75 62 6a 65 63 |inter to| TSubjec|
|00003700| 74 20 72 65 63 6f 72 64 | 0d 09 09 09 0d 09 45 78 |t record|......Ex|
|00003710| 69 74 3a 09 66 75 6e 63 | 74 69 6f 6e 20 72 65 73 |it:.func|tion res|
|00003720| 75 6c 74 20 3d 20 0d 09 | 09 09 09 2d 31 20 69 66 |ult = ..|...-1 if|
|00003730| 20 61 72 74 69 63 6c 65 | 20 6e 75 6d 62 65 72 20 | article| number |
|00003740| 3c 20 61 72 74 69 63 6c | 65 20 6e 75 6d 62 65 72 |< articl|e number|
|00003750| 20 69 6e 20 54 53 75 62 | 6a 65 63 74 20 72 65 63 | in TSub|ject rec|
|00003760| 6f 72 64 2e 0d 09 09 09 | 09 30 20 69 66 20 61 72 |ord.....|.0 if ar|
|00003770| 74 69 63 6c 65 20 6e 75 | 6d 62 65 72 20 3d 20 61 |ticle nu|mber = a|
|00003780| 72 74 69 63 6c 65 20 6e | 75 6d 62 65 72 20 69 6e |rticle n|umber in|
|00003790| 20 54 53 75 62 6a 65 63 | 74 20 72 65 63 6f 72 64 | TSubjec|t record|
|000037a0| 2e 0d 09 09 09 09 2b 31 | 20 69 66 20 61 72 74 69 |......+1| if arti|
|000037b0| 63 6c 65 20 6e 75 6d 62 | 65 72 20 3e 20 61 72 74 |cle numb|er > art|
|000037c0| 69 63 6c 65 20 6e 75 6d | 62 65 72 20 69 6e 20 54 |icle num|ber in T|
|000037d0| 53 75 62 6a 65 63 74 20 | 72 65 63 6f 72 64 2e 0d |Subject |record..|
|000037e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000037f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003800| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003810| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003820| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2a 2f 0d 0d |--------|----*/..|
|00003830| 73 74 61 74 69 63 20 69 | 6e 74 20 43 6f 6d 70 61 |static i|nt Compa|
|00003840| 72 65 41 72 74 69 63 6c | 65 4e 75 6d 62 65 72 73 |reArticl|eNumbers|
|00003850| 20 28 6c 6f 6e 67 20 2a | 6e 75 6d 62 65 72 2c 20 | (long *|number, |
|00003860| 54 53 75 62 6a 65 63 74 | 20 2a 78 29 0d 7b 0d 09 |TSubject| *x).{..|
|00003870| 69 66 20 28 2a 6e 75 6d | 62 65 72 20 3c 20 78 2d |if (*num|ber < x-|
|00003880| 3e 6e 75 6d 62 65 72 29 | 20 7b 0d 09 09 72 65 74 |>number)| {...ret|
|00003890| 75 72 6e 20 2d 31 3b 0d | 09 7d 20 65 6c 73 65 20 |urn -1;.|.} else |
|000038a0| 69 66 20 28 2a 6e 75 6d | 62 65 72 20 3d 3d 20 78 |if (*num|ber == x|
|000038b0| 2d 3e 6e 75 6d 62 65 72 | 29 20 7b 0d 09 09 72 65 |->number|) {...re|
|000038c0| 74 75 72 6e 20 30 3b 0d | 09 7d 20 65 6c 73 65 20 |turn 0;.|.} else |
|000038d0| 7b 0d 09 09 72 65 74 75 | 72 6e 20 2b 31 3b 0d 09 |{...retu|rn +1;..|
|000038e0| 7d 0d 7d 0d 0d 0d 0d 2f | 2a 2d 2d 2d 2d 2d 2d 2d |}.}..../|*-------|
|000038f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003900| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003920| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003930| 2d 2d 2d 2d 2d 0d 09 41 | 70 70 65 6e 64 4f 6e 65 |-----..A|ppendOne|
|00003940| 43 61 63 68 65 64 41 72 | 74 69 63 6c 65 20 0d 09 |CachedAr|ticle ..|
|00003950| 0d 09 41 70 70 65 6e 64 | 20 6f 6e 65 20 63 61 63 |..Append| one cac|
|00003960| 68 65 64 20 61 72 74 69 | 63 6c 65 20 66 6f 72 20 |hed arti|cle for |
|00003970| 61 20 67 72 6f 75 70 20 | 74 6f 20 74 68 65 20 65 |a group |to the e|
|00003980| 6e 64 20 6f 66 20 61 20 | 73 75 62 6a 65 63 74 20 |nd of a |subject |
|00003990| 61 72 72 61 79 2e 0d 09 | 0d 09 45 6e 74 72 79 3a |array...|..Entry:|
|000039a0| 09 73 75 62 6a 65 63 74 | 41 72 72 61 79 20 3d 20 |.subject|Array = |
|000039b0| 68 61 6e 64 6c 65 20 74 | 6f 20 73 75 62 6a 65 63 |handle t|o subjec|
|000039c0| 74 20 61 72 72 61 79 2e | 0d 09 09 09 6f 6c 64 4e |t array.|....oldN|
|000039d0| 75 6d 53 75 62 6a 65 63 | 74 73 20 3d 20 6e 75 6d |umSubjec|ts = num|
|000039e0| 62 65 72 20 6f 66 20 65 | 6c 65 6d 65 6e 74 73 20 |ber of e|lements |
|000039f0| 69 6e 20 6f 72 69 67 69 | 6e 61 6c 20 73 75 62 6a |in origi|nal subj|
|00003a00| 65 63 74 20 61 72 72 61 | 79 2e 0d 09 09 09 2a 6e |ect arra|y.....*n|
|00003a10| 75 6d 53 75 62 6a 65 63 | 74 73 20 3d 20 63 75 72 |umSubjec|ts = cur|
|00003a20| 72 65 6e 74 20 6e 75 6d | 62 65 72 20 6f 66 20 65 |rent num|ber of e|
|00003a30| 6c 65 6d 65 6e 74 73 20 | 69 6e 20 73 75 62 6a 65 |lements |in subje|
|00003a40| 63 74 20 61 72 72 61 79 | 2e 0d 09 09 09 73 74 72 |ct array|.....str|
|00003a50| 69 6e 67 73 20 3d 20 68 | 61 6e 64 6c 65 20 74 6f |ings = h|andle to|
|00003a60| 20 73 74 72 69 6e 67 73 | 20 62 6c 6f 63 6b 20 66 | strings| block f|
|00003a70| 6f 72 20 73 75 62 6a 65 | 63 74 20 77 69 6e 64 6f |or subje|ct windo|
|00003a80| 77 2e 0d 09 09 09 6e 75 | 6d 62 65 72 20 3d 20 61 |w.....nu|mber = a|
|00003a90| 72 74 69 63 6c 65 20 6e | 75 6d 62 65 72 2e 0d 09 |rticle n|umber...|
|00003aa0| 09 09 73 75 62 6a 65 63 | 74 4f 66 66 73 65 74 20 |..subjec|tOffset |
|00003ab0| 3d 20 6f 66 66 73 65 74 | 20 6f 66 20 73 75 62 6a |= offset| of subj|
|00003ac0| 65 63 74 20 73 74 72 69 | 6e 67 20 69 6e 20 73 74 |ect stri|ng in st|
|00003ad0| 72 69 6e 67 73 20 62 6c | 6f 63 6b 2e 0d 09 09 09 |rings bl|ock.....|
|00003ae0| 61 75 74 68 6f 72 4f 66 | 66 73 65 74 20 3d 20 6f |authorOf|fset = o|
|00003af0| 66 66 73 65 74 20 6f 66 | 20 61 75 74 68 6f 72 20 |ffset of| author |
|00003b00| 73 74 72 69 6e 67 20 69 | 6e 20 73 74 72 69 6e 67 |string i|n string|
|00003b10| 73 20 62 6c 6f 63 6b 2e | 0d 09 09 09 0d 09 45 78 |s block.|......Ex|
|00003b20| 69 74 3a 09 66 75 6e 63 | 74 69 6f 6e 20 72 65 73 |it:.func|tion res|
|00003b30| 75 6c 74 20 3d 20 65 72 | 72 6f 72 20 63 6f 64 65 |ult = er|ror code|
|00003b40| 2e 0d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |..------|--------|
|00003b50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2a 2f |--------|------*/|
|00003b90| 0d 0d 73 74 61 74 69 63 | 20 4f 53 45 72 72 20 41 |..static| OSErr A|
|00003ba0| 70 70 65 6e 64 4f 6e 65 | 43 61 63 68 65 64 41 72 |ppendOne|CachedAr|
|00003bb0| 74 69 63 6c 65 20 28 54 | 53 75 62 6a 65 63 74 20 |ticle (T|Subject |
|00003bc0| 2a 2a 73 75 62 6a 65 63 | 74 41 72 72 61 79 2c 20 |**subjec|tArray, |
|00003bd0| 73 68 6f 72 74 20 6f 6c | 64 4e 75 6d 53 75 62 6a |short ol|dNumSubj|
|00003be0| 65 63 74 73 2c 0d 09 73 | 68 6f 72 74 20 2a 6e 75 |ects,..s|hort *nu|
|00003bf0| 6d 53 75 62 6a 65 63 74 | 73 2c 20 48 61 6e 64 6c |mSubject|s, Handl|
|00003c00| 65 20 73 74 72 69 6e 67 | 73 2c 20 6c 6f 6e 67 20 |e string|s, long |
|00003c10| 6e 75 6d 62 65 72 2c 20 | 6c 6f 6e 67 20 73 75 62 |number, |long sub|
|00003c20| 6a 65 63 74 4f 66 66 73 | 65 74 2c 20 0d 09 6c 6f |jectOffs|et, ..lo|
|00003c30| 6e 67 20 61 75 74 68 6f | 72 4f 66 66 73 65 74 29 |ng autho|rOffset)|
|00003c40| 0d 7b 0d 09 54 53 75 62 | 6a 65 63 74 20 2a 78 3b |.{..TSub|ject *x;|
|00003c50| 0d 09 4f 53 45 72 72 20 | 65 72 72 20 3d 20 6e 6f |..OSErr |err = no|
|00003c60| 45 72 72 3b 0d 09 6c 6f | 6e 67 20 73 4f 66 66 73 |Err;..lo|ng sOffs|
|00003c70| 65 74 2c 20 61 4f 66 66 | 73 65 74 3b 0d 09 73 68 |et, aOff|set;..sh|
|00003c80| 6f 72 74 20 73 4c 65 6e | 2c 20 61 4c 65 6e 3b 0d |ort sLen|, aLen;.|
|00003c90| 09 63 68 61 72 20 73 74 | 61 74 65 3b 0d 09 0d 09 |.char st|ate;....|
|00003ca0| 2f 2a 20 43 68 65 63 6b | 20 74 6f 20 73 65 65 20 |/* Check| to see |
|00003cb0| 69 66 20 74 68 69 73 20 | 61 72 74 69 63 6c 65 20 |if this |article |
|00003cc0| 77 61 73 20 61 6c 72 65 | 61 64 79 20 72 65 61 64 |was alre|ady read|
|00003cd0| 20 66 72 6f 6d 20 74 68 | 65 20 6e 65 74 2e 20 2a | from th|e net. *|
|00003ce0| 2f 0d 0d 09 73 74 61 74 | 65 20 3d 20 4d 79 48 47 |/...stat|e = MyHG|
|00003cf0| 65 74 53 74 61 74 65 28 | 73 75 62 6a 65 63 74 41 |etState(|subjectA|
|00003d00| 72 72 61 79 29 3b 0d 09 | 4d 79 48 4c 6f 63 6b 28 |rray);..|MyHLock(|
|00003d10| 73 75 62 6a 65 63 74 41 | 72 72 61 79 29 3b 0d 09 |subjectA|rray);..|
|00003d20| 78 20 3d 20 62 73 65 61 | 72 63 68 28 26 6e 75 6d |x = bsea|rch(&num|
|00003d30| 62 65 72 2c 20 2a 73 75 | 62 6a 65 63 74 41 72 72 |ber, *su|bjectArr|
|00003d40| 61 79 2c 20 6f 6c 64 4e | 75 6d 53 75 62 6a 65 63 |ay, oldN|umSubjec|
|00003d50| 74 73 2c 20 73 69 7a 65 | 6f 66 28 54 53 75 62 6a |ts, size|of(TSubj|
|00003d60| 65 63 74 29 2c 20 0d 09 | 09 28 69 6e 74 28 2a 29 |ect), ..|.(int(*)|
|00003d70| 28 63 6f 6e 73 74 20 76 | 6f 69 64 20 2a 2c 20 63 |(const v|oid *, c|
|00003d80| 6f 6e 73 74 20 76 6f 69 | 64 20 2a 29 29 43 6f 6d |onst voi|d *))Com|
|00003d90| 70 61 72 65 41 72 74 69 | 63 6c 65 4e 75 6d 62 65 |pareArti|cleNumbe|
|00003da0| 72 73 29 3b 0d 09 4d 79 | 48 53 65 74 53 74 61 74 |rs);..My|HSetStat|
|00003db0| 65 28 73 75 62 6a 65 63 | 74 41 72 72 61 79 2c 20 |e(subjec|tArray, |
|00003dc0| 73 74 61 74 65 29 3b 0d | 09 69 66 20 28 78 20 21 |state);.|.if (x !|
|00003dd0| 3d 20 6e 69 6c 29 20 72 | 65 74 75 72 6e 20 6e 6f |= nil) r|eturn no|
|00003de0| 45 72 72 3b 0d 09 0d 09 | 2f 2a 20 43 68 65 63 6b |Err;....|/* Check|
|00003df0| 20 66 6f 72 20 74 6f 6f | 20 6d 61 6e 79 20 73 75 | for too| many su|
|00003e00| 62 6a 65 63 74 73 2e 20 | 2a 2f 0d 09 0d 09 69 66 |bjects. |*/....if|
|00003e10| 20 28 2a 6e 75 6d 53 75 | 62 6a 65 63 74 73 20 3e | (*numSu|bjects >|
|00003e20| 3d 20 31 36 30 30 30 29 | 20 7b 0d 09 09 45 72 72 |= 16000)| {...Err|
|00003e30| 6f 72 4d 65 73 73 61 67 | 65 4e 75 6d 62 65 72 28 |orMessag|eNumber(|
|00003e40| 6b 53 74 72 54 6f 6f 4d | 61 6e 79 53 75 62 6a 65 |kStrTooM|anySubje|
|00003e50| 63 74 73 29 3b 0d 09 09 | 72 65 74 75 72 6e 20 75 |cts);...|return u|
|00003e60| 73 65 72 43 61 6e 63 65 | 6c 65 64 45 72 72 3b 0d |serCance|ledErr;.|
|00003e70| 09 7d 0d 09 0d 09 2f 2a | 20 41 64 64 20 74 68 65 |.}..../*| Add the|
|00003e80| 20 73 75 62 6a 65 63 74 | 20 61 6e 64 20 61 75 74 | subject| and aut|
|00003e90| 68 6f 72 20 73 74 72 69 | 6e 67 73 20 74 6f 20 74 |hor stri|ngs to t|
|00003ea0| 68 65 20 73 74 72 69 6e | 67 73 20 62 6c 6f 63 6b |he strin|gs block|
|00003eb0| 20 66 6f 72 20 74 68 65 | 20 0d 09 20 20 20 73 75 | for the| .. su|
|00003ec0| 62 6a 65 63 74 20 77 69 | 6e 64 6f 77 2e 20 2a 2f |bject wi|ndow. */|
|00003ed0| 0d 09 20 20 20 0d 09 73 | 4c 65 6e 20 3d 20 73 74 |.. ..s|Len = st|
|00003ee0| 72 6c 65 6e 28 2a 67 53 | 74 72 69 6e 67 73 20 2b |rlen(*gS|trings +|
|00003ef0| 20 73 75 62 6a 65 63 74 | 4f 66 66 73 65 74 29 3b | subject|Offset);|
|00003f00| 0d 09 61 4c 65 6e 20 3d | 20 73 74 72 6c 65 6e 28 |..aLen =| strlen(|
|00003f10| 2a 67 53 74 72 69 6e 67 | 73 20 2b 20 61 75 74 68 |*gString|s + auth|
|00003f20| 6f 72 4f 66 66 73 65 74 | 29 3b 0d 09 73 4f 66 66 |orOffset|);..sOff|
|00003f30| 73 65 74 20 3d 20 47 65 | 74 48 61 6e 64 6c 65 53 |set = Ge|tHandleS|
|00003f40| 69 7a 65 28 73 74 72 69 | 6e 67 73 29 3b 0d 09 61 |ize(stri|ngs);..a|
|00003f50| 4f 66 66 73 65 74 20 3d | 20 73 4f 66 66 73 65 74 |Offset =| sOffset|
|00003f60| 20 2b 20 73 4c 65 6e 20 | 2b 20 31 3b 0d 09 65 72 | + sLen |+ 1;..er|
|00003f70| 72 20 3d 20 4d 79 53 65 | 74 48 61 6e 64 6c 65 53 |r = MySe|tHandleS|
|00003f80| 69 7a 65 28 73 74 72 69 | 6e 67 73 2c 20 61 4f 66 |ize(stri|ngs, aOf|
|00003f90| 66 73 65 74 20 2b 20 61 | 4c 65 6e 20 2b 20 31 29 |fset + a|Len + 1)|
|00003fa0| 3b 0d 09 69 66 20 28 65 | 72 72 20 21 3d 20 6e 6f |;..if (e|rr != no|
|00003fb0| 45 72 72 29 20 72 65 74 | 75 72 6e 20 65 72 72 3b |Err) ret|urn err;|
|00003fc0| 0d 09 73 74 72 63 70 79 | 28 2a 73 74 72 69 6e 67 |..strcpy|(*string|
|00003fd0| 73 20 2b 20 73 4f 66 66 | 73 65 74 2c 20 2a 67 53 |s + sOff|set, *gS|
|00003fe0| 74 72 69 6e 67 73 20 2b | 20 73 75 62 6a 65 63 74 |trings +| subject|
|00003ff0| 4f 66 66 73 65 74 29 3b | 0d 09 73 74 72 63 70 79 |Offset);|..strcpy|
|00004000| 28 2a 73 74 72 69 6e 67 | 73 20 2b 20 61 4f 66 66 |(*string|s + aOff|
|00004010| 73 65 74 2c 20 2a 67 53 | 74 72 69 6e 67 73 20 2b |set, *gS|trings +|
|00004020| 20 61 75 74 68 6f 72 4f | 66 66 73 65 74 29 3b 0d | authorO|ffset);.|
|00004030| 09 20 20 20 0d 09 2f 2a | 20 41 64 64 20 61 20 6e |. ../*| Add a n|
|00004040| 65 77 20 54 53 75 62 6a | 65 63 74 20 65 6c 65 6d |ew TSubj|ect elem|
|00004050| 65 6e 74 20 74 6f 20 74 | 68 65 20 65 6e 64 20 6f |ent to t|he end o|
|00004060| 66 20 74 68 65 20 73 75 | 62 6a 65 63 74 20 61 72 |f the su|bject ar|
|00004070| 72 61 79 2e 20 2a 2f 0d | 09 0d 09 65 72 72 20 3d |ray. */.|...err =|
|00004080| 20 4d 79 53 65 74 48 61 | 6e 64 6c 65 53 69 7a 65 | MySetHa|ndleSize|
|00004090| 28 73 75 62 6a 65 63 74 | 41 72 72 61 79 2c 20 28 |(subject|Array, (|
|000040a0| 2a 6e 75 6d 53 75 62 6a | 65 63 74 73 2b 31 29 2a |*numSubj|ects+1)*|
|000040b0| 73 69 7a 65 6f 66 28 54 | 53 75 62 6a 65 63 74 29 |sizeof(T|Subject)|
|000040c0| 29 3b 0d 09 69 66 20 28 | 65 72 72 20 21 3d 20 6e |);..if (|err != n|
|000040d0| 6f 45 72 72 29 20 72 65 | 74 75 72 6e 20 65 72 72 |oErr) re|turn err|
|000040e0| 3b 0d 09 78 20 3d 20 26 | 28 2a 73 75 62 6a 65 63 |;..x = &|(*subjec|
|000040f0| 74 41 72 72 61 79 29 5b | 2a 6e 75 6d 53 75 62 6a |tArray)[|*numSubj|
|00004100| 65 63 74 73 5d 3b 0d 09 | 78 2d 3e 6e 75 6d 62 65 |ects];..|x->numbe|
|00004110| 72 20 3d 20 6e 75 6d 62 | 65 72 3b 0d 09 78 2d 3e |r = numb|er;..x->|
|00004120| 73 75 62 6a 65 63 74 4f | 66 66 73 65 74 20 3d 20 |subjectO|ffset = |
|00004130| 73 4f 66 66 73 65 74 3b | 0d 09 78 2d 3e 61 75 74 |sOffset;|..x->aut|
|00004140| 68 6f 72 4f 66 66 73 65 | 74 20 3d 20 61 4f 66 66 |horOffse|t = aOff|
|00004150| 73 65 74 3b 0d 09 78 2d | 3e 72 65 61 64 20 3d 20 |set;..x-|>read = |
|00004160| 74 72 75 65 3b 0d 09 78 | 2d 3e 63 6f 6c 6c 61 70 |true;..x|->collap|
|00004170| 73 65 64 20 3d 20 67 50 | 72 65 66 73 2e 73 68 6f |sed = gP|refs.sho|
|00004180| 77 54 68 72 65 61 64 73 | 43 6f 6c 6c 61 70 73 65 |wThreads|Collapse|
|00004190| 64 3b 0d 09 78 2d 3e 69 | 6e 4c 69 73 74 20 3d 20 |d;..x->i|nList = |
|000041a0| 74 72 75 65 3b 0d 09 78 | 2d 3e 64 72 61 77 54 72 |true;..x|->drawTr|
|000041b0| 69 61 6e 67 6c 65 46 69 | 6c 6c 65 64 20 3d 20 66 |iangleFi|lled = f|
|000041c0| 61 6c 73 65 3b 0d 09 78 | 2d 3e 6f 6e 6c 79 52 65 |alse;..x|->onlyRe|
|000041d0| 64 72 61 77 54 72 69 61 | 6e 67 6c 65 20 3d 20 66 |drawTria|ngle = f|
|000041e0| 61 6c 73 65 3b 0d 09 78 | 2d 3e 6f 6e 6c 79 52 65 |alse;..x|->onlyRe|
|000041f0| 64 72 61 77 43 68 65 63 | 6b 20 3d 20 66 61 6c 73 |drawChec|k = fals|
|00004200| 65 3b 0d 09 28 2a 6e 75 | 6d 53 75 62 6a 65 63 74 |e;..(*nu|mSubject|
|00004210| 73 29 2b 2b 3b 0d 09 72 | 65 74 75 72 6e 20 6e 6f |s)++;..r|eturn no|
|00004220| 45 72 72 3b 0d 7d 0d 0d | 0d 0d 2f 2a 2d 2d 2d 2d |Err;.}..|../*----|
|00004230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004270| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 09 41 70 70 65 6e 64 |--------|..Append|
|00004280| 43 61 63 68 65 64 41 72 | 74 69 63 6c 65 73 20 0d |CachedAr|ticles .|
|00004290| 09 0d 09 41 70 70 65 6e | 64 20 61 6c 6c 20 74 68 |...Appen|d all th|
|000042a0| 65 20 63 61 63 68 65 64 | 20 61 72 74 69 63 6c 65 |e cached| article|
|000042b0| 73 20 66 6f 72 20 61 20 | 67 72 6f 75 70 20 74 6f |s for a |group to|
|000042c0| 20 74 68 65 20 65 6e 64 | 20 6f 66 20 74 68 65 20 | the end| of the |
|000042d0| 73 75 62 6a 65 63 74 0d | 09 61 72 72 61 79 20 66 |subject.|.array f|
|000042e0| 6f 72 20 61 20 73 75 62 | 6a 65 63 74 20 77 69 6e |or a sub|ject win|
|000042f0| 64 6f 77 2e 0d 09 0d 09 | 45 6e 74 72 79 3a 09 77 |dow.....|Entry:.w|
|00004300| 69 6e 64 20 3d 20 70 6f | 69 6e 74 65 72 20 74 6f |ind = po|inter to|
|00004310| 20 73 75 62 6a 65 63 74 | 20 77 69 6e 64 6f 77 2e | subject| window.|
|00004320| 0d 09 09 09 0d 09 45 78 | 69 74 3a 09 66 75 6e 63 |......Ex|it:.func|
|00004330| 74 69 6f 6e 20 72 65 73 | 75 6c 74 20 3d 20 65 72 |tion res|ult = er|
|00004340| 72 6f 72 20 63 6f 64 65 | 2e 0d 2d 2d 2d 2d 2d 2d |ror code|..------|
|00004350| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004360| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004370| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004380| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004390| 2d 2d 2d 2d 2d 2d 2a 2f | 0d 0d 4f 53 45 72 72 20 |------*/|..OSErr |
|000043a0| 41 70 70 65 6e 64 43 61 | 63 68 65 64 41 72 74 69 |AppendCa|chedArti|
|000043b0| 63 6c 65 73 20 28 57 69 | 6e 64 6f 77 50 74 72 20 |cles (Wi|ndowPtr |
|000043c0| 77 69 6e 64 29 0d 7b 0d | 09 54 57 69 6e 64 6f 77 |wind).{.|.TWindow|
|000043d0| 20 2a 2a 69 6e 66 6f 3b | 0d 09 43 53 74 72 32 35 | **info;|..CStr25|
|000043e0| 35 20 67 72 6f 75 70 4e | 61 6d 65 3b 0d 09 54 53 |5 groupN|ame;..TS|
|000043f0| 75 62 6a 65 63 74 20 2a | 2a 73 75 62 6a 65 63 74 |ubject *|*subject|
|00004400| 41 72 72 61 79 3b 0d 09 | 73 68 6f 72 74 20 6e 75 |Array;..|short nu|
|00004410| 6d 53 75 62 6a 65 63 74 | 73 2c 20 6f 6c 64 4e 75 |mSubject|s, oldNu|
|00004420| 6d 53 75 62 6a 65 63 74 | 73 3b 0d 09 6c 6f 6e 67 |mSubject|s;..long|
|00004430| 20 67 72 6f 75 70 49 6e | 64 65 78 2c 20 69 3b 0d | groupIn|dex, i;.|
|00004440| 09 54 47 72 6f 75 70 49 | 6e 66 6f 20 2a 71 3b 0d |.TGroupI|nfo *q;.|
|00004450| 09 54 41 72 74 69 63 6c | 65 49 6e 66 6f 20 2a 70 |.TArticl|eInfo *p|
|00004460| 3b 0d 09 48 61 6e 64 6c | 65 20 73 74 72 69 6e 67 |;..Handl|e string|
|00004470| 73 3b 0d 09 4f 53 45 72 | 72 20 65 72 72 20 3d 20 |s;..OSEr|r err = |
|00004480| 6e 6f 45 72 72 3b 0d 09 | 0d 09 69 66 20 28 67 47 |noErr;..|..if (gG|
|00004490| 72 6f 75 70 49 6e 66 6f | 20 3d 3d 20 6e 69 6c 29 |roupInfo| == nil)|
|000044a0| 20 72 65 74 75 72 6e 20 | 6e 6f 45 72 72 3b 0d 09 | return |noErr;..|
|000044b0| 0d 09 69 6e 66 6f 20 3d | 20 28 54 57 69 6e 64 6f |..info =| (TWindo|
|000044c0| 77 2a 2a 29 47 65 74 57 | 52 65 66 43 6f 6e 28 77 |w**)GetW|RefCon(w|
|000044d0| 69 6e 64 29 3b 0d 09 73 | 74 72 63 70 79 28 67 72 |ind);..s|trcpy(gr|
|000044e0| 6f 75 70 4e 61 6d 65 2c | 20 2a 67 47 72 6f 75 70 |oupName,| *gGroup|
|000044f0| 4e 61 6d 65 73 20 2b 20 | 28 2a 2a 69 6e 66 6f 29 |Names + |(**info)|
|00004500| 2e 67 72 6f 75 70 4e 61 | 6d 65 4f 66 66 73 65 74 |.groupNa|meOffset|
|00004510| 29 3b 0d 09 73 75 62 6a | 65 63 74 41 72 72 61 79 |);..subj|ectArray|
|00004520| 20 3d 20 28 2a 2a 69 6e | 66 6f 29 2e 73 75 62 6a | = (**in|fo).subj|
|00004530| 65 63 74 41 72 72 61 79 | 3b 0d 09 6e 75 6d 53 75 |ectArray|;..numSu|
|00004540| 62 6a 65 63 74 73 20 3d | 20 6f 6c 64 4e 75 6d 53 |bjects =| oldNumS|
|00004550| 75 62 6a 65 63 74 73 20 | 3d 20 28 2a 2a 69 6e 66 |ubjects |= (**inf|
|00004560| 6f 29 2e 6e 75 6d 53 75 | 62 6a 65 63 74 73 3b 0d |o).numSu|bjects;.|
|00004570| 09 73 74 72 69 6e 67 73 | 20 3d 20 28 2a 2a 69 6e |.strings| = (**in|
|00004580| 66 6f 29 2e 73 74 72 69 | 6e 67 73 3b 0d 09 0d 09 |fo).stri|ngs;....|
|00004590| 66 6f 72 20 28 67 72 6f | 75 70 49 6e 64 65 78 20 |for (gro|upIndex |
|000045a0| 3d 20 30 2c 20 71 20 3d | 20 2a 67 47 72 6f 75 70 |= 0, q =| *gGroup|
|000045b0| 49 6e 66 6f 3b 20 67 72 | 6f 75 70 49 6e 64 65 78 |Info; gr|oupIndex|
|000045c0| 20 3c 20 67 4e 75 6d 47 | 72 6f 75 70 49 6e 66 6f | < gNumG|roupInfo|
|000045d0| 3b 20 67 72 6f 75 70 49 | 6e 64 65 78 2b 2b 2c 20 |; groupI|ndex++, |
|000045e0| 71 2b 2b 29 20 7b 0d 09 | 09 69 66 20 28 73 74 72 |q++) {..|.if (str|
|000045f0| 63 6d 70 28 67 72 6f 75 | 70 4e 61 6d 65 2c 20 2a |cmp(grou|pName, *|
|00004600| 67 53 74 72 69 6e 67 73 | 20 2b 20 71 2d 3e 6f 66 |gStrings| + q->of|
|00004610| 66 73 65 74 29 20 3d 3d | 20 30 29 20 62 72 65 61 |fset) ==| 0) brea|
|00004620| 6b 3b 0d 09 7d 0d 09 69 | 66 20 28 67 72 6f 75 70 |k;..}..i|f (group|
|00004630| 49 6e 64 65 78 20 3e 3d | 20 67 4e 75 6d 47 72 6f |Index >=| gNumGro|
|00004640| 75 70 49 6e 66 6f 29 20 | 72 65 74 75 72 6e 20 6e |upInfo) |return n|
|00004650| 6f 45 72 72 3b 0d 09 0d | 09 66 6f 72 20 28 69 20 |oErr;...|.for (i |
|00004660| 3d 20 30 3b 20 69 20 3c | 20 67 4e 75 6d 41 72 74 |= 0; i <| gNumArt|
|00004670| 69 63 6c 65 49 6e 66 6f | 3b 20 69 2b 2b 29 20 7b |icleInfo|; i++) {|
|00004680| 0d 09 09 70 20 3d 20 26 | 28 2a 67 41 72 74 69 63 |...p = &|(*gArtic|
|00004690| 6c 65 49 6e 66 6f 29 5b | 69 5d 3b 0d 09 09 69 66 |leInfo)[|i];...if|
|000046a0| 20 28 70 2d 3e 67 72 6f | 75 70 49 6e 64 65 78 20 | (p->gro|upIndex |
|000046b0| 3d 3d 20 67 72 6f 75 70 | 49 6e 64 65 78 29 20 7b |== group|Index) {|
|000046c0| 0d 09 09 09 65 72 72 20 | 3d 20 41 70 70 65 6e 64 |....err |= Append|
|000046d0| 4f 6e 65 43 61 63 68 65 | 64 41 72 74 69 63 6c 65 |OneCache|dArticle|
|000046e0| 28 73 75 62 6a 65 63 74 | 41 72 72 61 79 2c 20 20 |(subject|Array, |
|000046f0| 6f 6c 64 4e 75 6d 53 75 | 62 6a 65 63 74 73 2c 20 |oldNumSu|bjects, |
|00004700| 0d 09 09 09 09 26 6e 75 | 6d 53 75 62 6a 65 63 74 |.....&nu|mSubject|
|00004710| 73 2c 20 73 74 72 69 6e | 67 73 2c 20 70 2d 3e 6e |s, strin|gs, p->n|
|00004720| 75 6d 62 65 72 2c 20 70 | 2d 3e 73 75 62 6a 65 63 |umber, p|->subjec|
|00004730| 74 4f 66 66 73 65 74 2c | 20 0d 09 09 09 09 70 2d |tOffset,| .....p-|
|00004740| 3e 61 75 74 68 6f 72 4f | 66 66 73 65 74 29 3b 0d |>authorO|ffset);.|
|00004750| 09 09 09 69 66 20 28 65 | 72 72 20 21 3d 20 6e 6f |...if (e|rr != no|
|00004760| 45 72 72 29 20 72 65 74 | 75 72 6e 20 65 72 72 3b |Err) ret|urn err;|
|00004770| 0d 09 09 7d 0d 09 7d 0d | 09 0d 09 28 2a 2a 69 6e |...}..}.|...(**in|
|00004780| 66 6f 29 2e 6e 75 6d 53 | 75 62 6a 65 63 74 73 20 |fo).numS|ubjects |
|00004790| 3d 20 6e 75 6d 53 75 62 | 6a 65 63 74 73 3b 0d 09 |= numSub|jects;..|
|000047a0| 0d 09 72 65 74 75 72 6e | 20 6e 6f 45 72 72 3b 0d |..return| noErr;.|
|000047b0| 7d 0d 0d 0d 0d 2f 2a 2d | 2d 2d 2d 2d 2d 2d 2d 2d |}..../*-|--------|
|000047c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000047d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000047e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000047f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004800| 2d 2d 2d 0d 09 41 67 65 | 41 72 74 69 63 6c 65 43 |---..Age|ArticleC|
|00004810| 61 63 68 65 20 0d 09 0d | 09 41 67 65 20 74 68 65 |ache ...|.Age the|
|00004820| 20 63 61 63 68 65 64 20 | 61 72 74 69 63 6c 65 73 | cached |articles|
|00004830| 20 66 6f 72 20 61 20 67 | 72 6f 75 70 2e 0d 09 0d | for a g|roup....|
|00004840| 09 45 6e 74 72 79 3a 09 | 67 72 6f 75 70 4e 61 6d |.Entry:.|groupNam|
|00004850| 65 20 3d 20 67 72 6f 75 | 70 20 6e 61 6d 65 2e 0d |e = grou|p name..|
|00004860| 09 09 09 6c 6f 77 20 3d | 20 6c 6f 77 20 61 72 74 |...low =| low art|
|00004870| 69 63 6c 65 20 6e 75 6d | 62 65 72 20 66 6f 72 20 |icle num|ber for |
|00004880| 74 68 69 73 20 67 72 6f | 75 70 20 6f 6e 20 74 68 |this gro|up on th|
|00004890| 65 20 73 65 72 76 65 72 | 2e 0d 09 09 09 0d 09 45 |e server|.......E|
|000048a0| 78 69 74 3a 09 66 75 6e | 63 74 69 6f 6e 20 72 65 |xit:.fun|ction re|
|000048b0| 73 75 6c 74 20 3d 20 65 | 72 72 6f 72 20 63 6f 64 |sult = e|rror cod|
|000048c0| 65 2e 0d 09 09 09 09 0d | 09 41 6c 6c 20 63 61 63 |e.......|.All cac|
|000048d0| 68 65 64 20 61 72 74 69 | 63 6c 65 73 20 66 6f 72 |hed arti|cles for|
|000048e0| 20 74 68 65 20 67 72 6f | 75 70 20 77 69 74 68 20 | the gro|up with |
|000048f0| 61 72 74 69 63 6c 65 20 | 6e 75 6d 62 65 72 73 20 |article |numbers |
|00004900| 6c 65 73 73 20 74 68 61 | 6e 0d 09 74 68 65 20 6c |less tha|n..the l|
|00004910| 6f 77 20 61 72 74 69 63 | 6c 65 20 6e 75 6d 62 65 |ow artic|le numbe|
|00004920| 72 20 61 72 65 20 64 65 | 6c 65 74 65 64 2e 0d 2d |r are de|leted..-|
|00004930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004940| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004950| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004970| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2a 2f 0d 0d 4f |--------|---*/..O|
|00004980| 53 45 72 72 20 41 67 65 | 41 72 74 69 63 6c 65 43 |SErr Age|ArticleC|
|00004990| 61 63 68 65 20 28 63 68 | 61 72 20 2a 67 72 6f 75 |ache (ch|ar *grou|
|000049a0| 70 4e 61 6d 65 2c 20 6c | 6f 6e 67 20 6c 6f 77 29 |pName, l|ong low)|
|000049b0| 0d 7b 0d 09 6c 6f 6e 67 | 20 67 72 6f 75 70 49 6e |.{..long| groupIn|
|000049c0| 64 65 78 2c 20 69 3b 0d | 09 54 47 72 6f 75 70 49 |dex, i;.|.TGroupI|
|000049d0| 6e 66 6f 20 2a 71 3b 0d | 09 54 41 72 74 69 63 6c |nfo *q;.|.TArticl|
|000049e0| 65 49 6e 66 6f 20 2a 70 | 3b 0d 09 0d 09 69 66 20 |eInfo *p|;....if |
|000049f0| 28 67 47 72 6f 75 70 49 | 6e 66 6f 20 3d 3d 20 6e |(gGroupI|nfo == n|
|00004a00| 69 6c 29 20 72 65 74 75 | 72 6e 20 6e 6f 45 72 72 |il) retu|rn noErr|
|00004a10| 3b 0d 0d 09 66 6f 72 20 | 28 67 72 6f 75 70 49 6e |;...for |(groupIn|
|00004a20| 64 65 78 20 3d 20 30 2c | 20 71 20 3d 20 2a 67 47 |dex = 0,| q = *gG|
|00004a30| 72 6f 75 70 49 6e 66 6f | 3b 20 67 72 6f 75 70 49 |roupInfo|; groupI|
|00004a40| 6e 64 65 78 20 3c 20 67 | 4e 75 6d 47 72 6f 75 70 |ndex < g|NumGroup|
|00004a50| 49 6e 66 6f 3b 20 67 72 | 6f 75 70 49 6e 64 65 78 |Info; gr|oupIndex|
|00004a60| 2b 2b 2c 20 71 2b 2b 29 | 20 7b 0d 09 09 69 66 20 |++, q++)| {...if |
|00004a70| 28 73 74 72 63 6d 70 28 | 67 72 6f 75 70 4e 61 6d |(strcmp(|groupNam|
|00004a80| 65 2c 20 2a 67 53 74 72 | 69 6e 67 73 20 2b 20 71 |e, *gStr|ings + q|
|00004a90| 2d 3e 6f 66 66 73 65 74 | 29 20 3d 3d 20 30 29 20 |->offset|) == 0) |
|00004aa0| 62 72 65 61 6b 3b 0d 09 | 7d 0d 09 69 66 20 28 67 |break;..|}..if (g|
|00004ab0| 72 6f 75 70 49 6e 64 65 | 78 20 3e 3d 20 67 4e 75 |roupInde|x >= gNu|
|00004ac0| 6d 47 72 6f 75 70 49 6e | 66 6f 29 20 72 65 74 75 |mGroupIn|fo) retu|
|00004ad0| 72 6e 20 6e 6f 45 72 72 | 3b 0d 09 66 6f 72 20 28 |rn noErr|;..for (|
|00004ae0| 69 20 3d 20 30 2c 20 70 | 20 3d 20 2a 67 41 72 74 |i = 0, p| = *gArt|
|00004af0| 69 63 6c 65 49 6e 66 6f | 3b 20 69 20 3c 20 67 4e |icleInfo|; i < gN|
|00004b00| 75 6d 41 72 74 69 63 6c | 65 49 6e 66 6f 3b 20 69 |umArticl|eInfo; i|
|00004b10| 2b 2b 2c 20 70 2b 2b 29 | 20 7b 0d 09 09 69 66 20 |++, p++)| {...if |
|00004b20| 28 70 2d 3e 67 72 6f 75 | 70 49 6e 64 65 78 20 3d |(p->grou|pIndex =|
|00004b30| 3d 20 67 72 6f 75 70 49 | 6e 64 65 78 20 26 26 20 |= groupI|ndex && |
|00004b40| 70 2d 3e 6e 75 6d 62 65 | 72 20 3c 20 6c 6f 77 29 |p->numbe|r < low)|
|00004b50| 20 7b 0d 09 09 09 70 2d | 3e 67 72 6f 75 70 49 6e | {....p-|>groupIn|
|00004b60| 64 65 78 20 3d 20 2d 31 | 3b 0d 09 09 09 28 2a 67 |dex = -1|;....(*g|
|00004b70| 47 72 6f 75 70 49 6e 66 | 6f 29 5b 67 72 6f 75 70 |GroupInf|o)[group|
|00004b80| 49 6e 64 65 78 5d 2e 6e | 75 6d 43 61 63 68 65 64 |Index].n|umCached|
|00004b90| 2d 2d 3b 0d 09 09 09 67 | 43 61 63 68 65 44 69 72 |--;....g|CacheDir|
|00004ba0| 74 79 20 3d 20 74 72 75 | 65 3b 0d 09 09 7d 0d 09 |ty = tru|e;...}..|
|00004bb0| 7d 0d 09 72 65 74 75 72 | 6e 20 6e 6f 45 72 72 3b |}..retur|n noErr;|
|00004bc0| 0d 7d 0d 0d 0d 0d 2f 2a | 2d 2d 2d 2d 2d 2d 2d 2d |.}..../*|--------|
|00004bd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004be0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004bf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004c00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004c10| 2d 2d 2d 2d 0d 09 44 75 | 6d 70 41 72 74 69 63 6c |----..Du|mpArticl|
|00004c20| 65 43 61 63 68 65 54 6f | 46 69 6c 65 20 0d 09 0d |eCacheTo|File ...|
|00004c30| 09 44 75 6d 70 20 74 68 | 65 20 63 61 63 68 65 20 |.Dump th|e cache |
|00004c40| 74 6f 20 61 20 74 65 78 | 74 20 66 69 6c 65 20 69 |to a tex|t file i|
|00004c50| 6e 20 68 75 6d 61 6e 20 | 72 65 61 64 61 62 6c 65 |n human |readable|
|00004c60| 20 66 6f 72 6d 61 74 20 | 28 64 65 76 65 6c 6f 70 | format |(develop|
|00004c70| 6d 65 6e 74 0d 09 76 65 | 72 73 69 6f 6e 20 6f 6e |ment..ve|rsion on|
|00004c80| 6c 79 29 2e 0d 09 0d 09 | 45 6e 74 72 79 3a 09 66 |ly).....|Entry:.f|
|00004c90| 53 70 65 63 20 3d 20 70 | 6f 69 6e 74 65 72 20 74 |Spec = p|ointer t|
|00004ca0| 6f 20 66 69 6c 65 20 73 | 70 65 63 2e 0d 09 09 09 |o file s|pec.....|
|00004cb0| 0d 09 45 78 69 74 3a 09 | 66 75 6e 63 74 69 6f 6e |..Exit:.|function|
|00004cc0| 20 72 65 73 75 6c 74 20 | 3d 20 65 72 72 6f 72 20 | result |= error |
|00004cd0| 63 6f 64 65 2e 0d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |code..--|--------|
|00004ce0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004cf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004d00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004d10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004d20| 2d 2d 2a 2f 0d 0d 23 69 | 66 64 65 66 20 6b 44 65 |--*/..#i|fdef kDe|
|00004d30| 76 65 6c 6f 70 6d 65 6e | 74 56 65 72 73 69 6f 6e |velopmen|tVersion|
|00004d40| 0d 0d 4f 53 45 72 72 20 | 44 75 6d 70 41 72 74 69 |..OSErr |DumpArti|
|00004d50| 63 6c 65 43 61 63 68 65 | 54 6f 46 69 6c 65 20 28 |cleCache|ToFile (|
|00004d60| 46 53 53 70 65 63 20 2a | 66 53 70 65 63 29 0d 7b |FSSpec *|fSpec).{|
|00004d70| 0d 09 4f 53 45 72 72 20 | 65 72 72 20 3d 20 6e 6f |..OSErr |err = no|
|00004d80| 45 72 72 3b 0d 09 73 68 | 6f 72 74 20 72 65 66 4e |Err;..sh|ort refN|
|00004d90| 75 6d 20 3d 20 30 3b 0d | 09 43 53 74 72 32 35 35 |um = 0;.|.CStr255|
|00004da0| 20 6d 73 67 3b 0d 09 53 | 74 72 32 35 35 20 64 61 | msg;..S|tr255 da|
|00004db0| 74 65 53 74 72 69 6e 67 | 2c 20 74 69 6d 65 53 74 |teString|, timeSt|
|00004dc0| 72 69 6e 67 3b 0d 09 6c | 6f 6e 67 20 6c 65 6e 2c |ring;..l|ong len,|
|00004dd0| 20 6e 75 6d 43 61 63 68 | 65 20 3d 20 30 3b 0d 09 | numCach|e = 0;..|
|00004de0| 54 41 72 74 69 63 6c 65 | 49 6e 66 6f 20 2a 70 3b |TArticle|Info *p;|
|00004df0| 0d 09 54 47 72 6f 75 70 | 49 6e 66 6f 20 2a 71 3b |..TGroup|Info *q;|
|00004e00| 0d 09 6c 6f 6e 67 20 69 | 3b 0d 09 63 68 61 72 20 |..long i|;..char |
|00004e10| 73 74 61 74 65 31 2c 20 | 73 74 61 74 65 32 2c 20 |state1, |state2, |
|00004e20| 73 74 61 74 65 33 3b 0d | 09 0d 09 73 74 61 74 65 |state3;.|...state|
|00004e30| 31 20 3d 20 4d 79 48 47 | 65 74 53 74 61 74 65 28 |1 = MyHG|etState(|
|00004e40| 67 41 72 74 69 63 6c 65 | 49 6e 66 6f 29 3b 0d 09 |gArticle|Info);..|
|00004e50| 73 74 61 74 65 32 20 3d | 20 4d 79 48 47 65 74 53 |state2 =| MyHGetS|
|00004e60| 74 61 74 65 28 67 41 72 | 74 69 63 6c 65 49 6e 66 |tate(gAr|ticleInf|
|00004e70| 6f 29 3b 0d 09 73 74 61 | 74 65 33 20 3d 20 4d 79 |o);..sta|te3 = My|
|00004e80| 48 47 65 74 53 74 61 74 | 65 28 67 53 74 72 69 6e |HGetStat|e(gStrin|
|00004e90| 67 73 29 3b 0d 0d 09 69 | 66 20 28 67 47 72 6f 75 |gs);...i|f (gGrou|
|00004ea0| 70 49 6e 66 6f 20 3d 3d | 20 6e 69 6c 29 20 7b 0d |pInfo ==| nil) {.|
|00004eb0| 09 09 45 72 72 6f 72 4d | 65 73 73 61 67 65 28 22 |..ErrorM|essage("|
|00004ec0| 54 68 65 72 65 20 69 73 | 20 6e 6f 20 63 61 63 68 |There is| no cach|
|00004ed0| 65 2e 22 29 3b 0d 09 09 | 72 65 74 75 72 6e 20 75 |e.");...|return u|
|00004ee0| 73 65 72 43 61 6e 63 65 | 6c 65 64 45 72 72 3b 0d |serCance|ledErr;.|
|00004ef0| 09 7d 0d 0d 09 65 72 72 | 20 3d 20 46 53 70 4f 70 |.}...err| = FSpOp|
|00004f00| 65 6e 44 46 28 66 53 70 | 65 63 2c 20 66 73 52 64 |enDF(fSp|ec, fsRd|
|00004f10| 57 72 50 65 72 6d 2c 20 | 26 72 65 66 4e 75 6d 29 |WrPerm, |&refNum)|
|00004f20| 3b 0d 09 69 66 20 28 65 | 72 72 20 21 3d 20 6e 6f |;..if (e|rr != no|
|00004f30| 45 72 72 29 20 67 6f 74 | 6f 20 65 78 69 74 3b 0d |Err) got|o exit;.|
|00004f40| 0d 09 4d 79 48 4c 6f 63 | 6b 28 67 41 72 74 69 63 |..MyHLoc|k(gArtic|
|00004f50| 6c 65 49 6e 66 6f 29 3b | 0d 09 4d 79 48 4c 6f 63 |leInfo);|..MyHLoc|
|00004f60| 6b 28 67 47 72 6f 75 70 | 49 6e 66 6f 29 3b 0d 09 |k(gGroup|Info);..|
|00004f70| 4d 79 48 4c 6f 63 6b 28 | 67 53 74 72 69 6e 67 73 |MyHLock(|gStrings|
|00004f80| 29 3b 0d 09 0d 09 66 6f | 72 20 28 69 20 3d 20 30 |);....fo|r (i = 0|
|00004f90| 2c 20 70 20 3d 20 2a 67 | 41 72 74 69 63 6c 65 49 |, p = *g|ArticleI|
|00004fa0| 6e 66 6f 3b 20 69 20 3c | 20 67 4e 75 6d 41 72 74 |nfo; i <| gNumArt|
|00004fb0| 69 63 6c 65 49 6e 66 6f | 3b 20 69 2b 2b 2c 20 70 |icleInfo|; i++, p|
|00004fc0| 2b 2b 29 20 7b 0d 09 09 | 69 66 20 28 70 2d 3e 67 |++) {...|if (p->g|
|00004fd0| 72 6f 75 70 49 6e 64 65 | 78 20 3e 3d 20 30 29 20 |roupInde|x >= 0) |
|00004fe0| 6e 75 6d 43 61 63 68 65 | 2b 2b 3b 0d 09 7d 0d 09 |numCache|++;..}..|
|00004ff0| 0d 09 66 6f 72 20 28 69 | 20 3d 20 30 2c 20 71 20 |..for (i| = 0, q |
|00005000| 3d 20 2a 67 47 72 6f 75 | 70 49 6e 66 6f 3b 20 69 |= *gGrou|pInfo; i|
|00005010| 20 3c 20 67 4e 75 6d 47 | 72 6f 75 70 49 6e 66 6f | < gNumG|roupInfo|
|00005020| 3b 20 69 2b 2b 2c 20 71 | 2b 2b 29 20 7b 0d 09 09 |; i++, q|++) {...|
|00005030| 73 70 72 69 6e 74 66 28 | 6d 73 67 2c 20 22 25 39 |sprintf(|msg, "%9|
|00005040| 6c 64 20 63 61 63 68 65 | 64 20 61 72 74 69 63 6c |ld cache|d articl|
|00005050| 65 73 20 66 72 6f 6d 20 | 25 73 5c 72 22 2c 20 71 |es from |%s\r", q|
|00005060| 2d 3e 6e 75 6d 43 61 63 | 68 65 64 2c 20 2a 67 53 |->numCac|hed, *gS|
|00005070| 74 72 69 6e 67 73 20 2b | 20 71 2d 3e 6f 66 66 73 |trings +| q->offs|
|00005080| 65 74 29 3b 0d 09 09 6c | 65 6e 20 3d 20 73 74 72 |et);...l|en = str|
|00005090| 6c 65 6e 28 6d 73 67 29 | 3b 0d 09 09 4d 79 46 53 |len(msg)|;...MyFS|
|000050a0| 57 72 69 74 65 4e 6f 43 | 61 63 68 65 28 72 65 66 |WriteNoC|ache(ref|
|000050b0| 4e 75 6d 2c 20 26 6c 65 | 6e 2c 20 6d 73 67 2c 20 |Num, &le|n, msg, |
|000050c0| 6e 69 6c 29 3b 0d 09 7d | 0d 09 0d 09 73 70 72 69 |nil);..}|....spri|
|000050d0| 6e 74 66 28 6d 73 67 2c | 20 22 5c 72 25 39 6c 64 |ntf(msg,| "\r%9ld|
|000050e0| 20 74 6f 74 61 6c 20 61 | 72 74 69 63 6c 65 73 20 | total a|rticles |
|000050f0| 69 6e 20 63 61 63 68 65 | 5c 72 5c 72 25 39 6c 64 |in cache|\r\r%9ld|
|00005100| 20 74 6f 74 61 6c 20 62 | 79 74 65 73 20 69 6e 20 | total b|ytes in |
|00005110| 63 61 63 68 65 5c 72 5c | 72 22 2c 0d 09 09 6e 75 |cache\r\|r",...nu|
|00005120| 6d 43 61 63 68 65 2c 20 | 4d 79 47 65 74 48 61 6e |mCache, |MyGetHan|
|00005130| 64 6c 65 53 69 7a 65 28 | 67 47 72 6f 75 70 49 6e |dleSize(|gGroupIn|
|00005140| 66 6f 29 20 2b 20 4d 79 | 47 65 74 48 61 6e 64 6c |fo) + My|GetHandl|
|00005150| 65 53 69 7a 65 28 67 41 | 72 74 69 63 6c 65 49 6e |eSize(gA|rticleIn|
|00005160| 66 6f 29 20 2b 0d 09 09 | 4d 79 47 65 74 48 61 6e |fo) +...|MyGetHan|
|00005170| 64 6c 65 53 69 7a 65 28 | 67 53 74 72 69 6e 67 73 |dleSize(|gStrings|
|00005180| 29 29 3b 0d 09 6c 65 6e | 20 3d 20 73 74 72 6c 65 |));..len| = strle|
|00005190| 6e 28 6d 73 67 29 3b 0d | 09 4d 79 46 53 57 72 69 |n(msg);.|.MyFSWri|
|000051a0| 74 65 4e 6f 43 61 63 68 | 65 28 72 65 66 4e 75 6d |teNoCach|e(refNum|
|000051b0| 2c 20 26 6c 65 6e 2c 20 | 6d 73 67 2c 20 6e 69 6c |, &len, |msg, nil|
|000051c0| 29 3b 0d 09 0d 09 66 6f | 72 20 28 69 20 3d 20 30 |);....fo|r (i = 0|
|000051d0| 2c 20 70 20 3d 20 2a 67 | 41 72 74 69 63 6c 65 49 |, p = *g|ArticleI|
|000051e0| 6e 66 6f 3b 20 69 20 3c | 20 67 4e 75 6d 41 72 74 |nfo; i <| gNumArt|
|000051f0| 69 63 6c 65 49 6e 66 6f | 3b 20 69 2b 2b 2c 20 70 |icleInfo|; i++, p|
|00005200| 2b 2b 29 20 7b 0d 09 09 | 69 66 20 28 70 2d 3e 67 |++) {...|if (p->g|
|00005210| 72 6f 75 70 49 6e 64 65 | 78 20 3e 3d 20 30 29 20 |roupInde|x >= 0) |
|00005220| 7b 0d 09 09 09 73 70 72 | 69 6e 74 66 28 6d 73 67 |{....spr|intf(msg|
|00005230| 2c 20 22 25 6c 64 5c 72 | 20 20 20 25 73 3a 25 6c |, "%ld\r| %s:%l|
|00005240| 64 5c 72 22 2c 20 69 2c | 20 0d 09 09 09 09 2a 67 |d\r", i,| .....*g|
|00005250| 53 74 72 69 6e 67 73 20 | 2b 20 28 2a 67 47 72 6f |Strings |+ (*gGro|
|00005260| 75 70 49 6e 66 6f 29 5b | 70 2d 3e 67 72 6f 75 70 |upInfo)[|p->group|
|00005270| 49 6e 64 65 78 5d 2e 6f | 66 66 73 65 74 2c 0d 09 |Index].o|ffset,..|
|00005280| 09 09 09 70 2d 3e 6e 75 | 6d 62 65 72 29 3b 0d 09 |...p->nu|mber);..|
|00005290| 20 09 09 6c 65 6e 20 3d | 20 73 74 72 6c 65 6e 28 | ..len =| strlen(|
|000052a0| 6d 73 67 29 3b 0d 09 09 | 09 4d 79 46 53 57 72 69 |msg);...|.MyFSWri|
|000052b0| 74 65 4e 6f 43 61 63 68 | 65 28 72 65 66 4e 75 6d |teNoCach|e(refNum|
|000052c0| 2c 20 26 6c 65 6e 2c 20 | 6d 73 67 2c 20 6e 69 6c |, &len, |msg, nil|
|000052d0| 29 3b 0d 09 09 09 73 70 | 72 69 6e 74 66 28 6d 73 |);....sp|rintf(ms|
|000052e0| 67 2c 20 22 20 20 20 25 | 73 5c 72 22 2c 20 2a 67 |g, " %|s\r", *g|
|000052f0| 53 74 72 69 6e 67 73 20 | 2b 20 70 2d 3e 73 75 62 |Strings |+ p->sub|
|00005300| 6a 65 63 74 4f 66 66 73 | 65 74 29 3b 0d 09 09 09 |jectOffs|et);....|
|00005310| 6c 65 6e 20 3d 20 73 74 | 72 6c 65 6e 28 6d 73 67 |len = st|rlen(msg|
|00005320| 29 3b 0d 09 09 09 4d 79 | 46 53 57 72 69 74 65 4e |);....My|FSWriteN|
|00005330| 6f 43 61 63 68 65 28 72 | 65 66 4e 75 6d 2c 20 26 |oCache(r|efNum, &|
|00005340| 6c 65 6e 2c 20 6d 73 67 | 2c 20 6e 69 6c 29 3b 0d |len, msg|, nil);.|
|00005350| 09 09 09 73 70 72 69 6e | 74 66 28 6d 73 67 2c 20 |...sprin|tf(msg, |
|00005360| 22 20 20 20 25 73 5c 72 | 22 2c 20 2a 67 53 74 72 |" %s\r|", *gStr|
|00005370| 69 6e 67 73 20 2b 20 70 | 2d 3e 61 75 74 68 6f 72 |ings + p|->author|
|00005380| 4f 66 66 73 65 74 29 3b | 0d 09 09 09 6c 65 6e 20 |Offset);|....len |
|00005390| 3d 20 73 74 72 6c 65 6e | 28 6d 73 67 29 3b 0d 09 |= strlen|(msg);..|
|000053a0| 09 09 4d 79 46 53 57 72 | 69 74 65 4e 6f 43 61 63 |..MyFSWr|iteNoCac|
|000053b0| 68 65 28 72 65 66 4e 75 | 6d 2c 20 26 6c 65 6e 2c |he(refNu|m, &len,|
|000053c0| 20 6d 73 67 2c 20 6e 69 | 6c 29 3b 0d 09 09 09 49 | msg, ni|l);....I|
|000053d0| 55 44 61 74 65 53 74 72 | 69 6e 67 28 70 2d 3e 63 |UDateStr|ing(p->c|
|000053e0| 72 65 61 74 69 6f 6e 44 | 61 74 65 54 69 6d 65 2c |reationD|ateTime,|
|000053f0| 20 73 68 6f 72 74 44 61 | 74 65 2c 20 64 61 74 65 | shortDa|te, date|
|00005400| 53 74 72 69 6e 67 29 3b | 0d 09 09 09 49 55 54 69 |String);|....IUTi|
|00005410| 6d 65 53 74 72 69 6e 67 | 28 70 2d 3e 63 72 65 61 |meString|(p->crea|
|00005420| 74 69 6f 6e 44 61 74 65 | 54 69 6d 65 2c 20 66 61 |tionDate|Time, fa|
|00005430| 6c 73 65 2c 20 74 69 6d | 65 53 74 72 69 6e 67 29 |lse, tim|eString)|
|00005440| 3b 0d 09 09 09 70 32 63 | 73 74 72 28 64 61 74 65 |;....p2c|str(date|
|00005450| 53 74 72 69 6e 67 29 3b | 0d 09 09 09 70 32 63 73 |String);|....p2cs|
|00005460| 74 72 28 74 69 6d 65 53 | 74 72 69 6e 67 29 3b 0d |tr(timeS|tring);.|
|00005470| 09 09 09 73 70 72 69 6e | 74 66 28 6d 73 67 2c 20 |...sprin|tf(msg, |
|00005480| 22 20 20 20 43 72 65 61 | 74 65 64 20 25 73 20 25 |" Crea|ted %s %|
|00005490| 73 5c 72 22 2c 20 64 61 | 74 65 53 74 72 69 6e 67 |s\r", da|teString|
|000054a0| 2c 20 74 69 6d 65 53 74 | 72 69 6e 67 29 3b 0d 09 |, timeSt|ring);..|
|000054b0| 09 09 6c 65 6e 20 3d 20 | 73 74 72 6c 65 6e 28 6d |..len = |strlen(m|
|000054c0| 73 67 29 3b 0d 09 09 09 | 4d 79 46 53 57 72 69 74 |sg);....|MyFSWrit|
|000054d0| 65 4e 6f 43 61 63 68 65 | 28 72 65 66 4e 75 6d 2c |eNoCache|(refNum,|
|000054e0| 20 26 6c 65 6e 2c 20 6d | 73 67 2c 20 6e 69 6c 29 | &len, m|sg, nil)|
|000054f0| 3b 0d 09 09 7d 20 65 6c | 73 65 20 7b 0d 09 09 09 |;...} el|se {....|
|00005500| 73 70 72 69 6e 74 66 28 | 6d 73 67 2c 20 22 25 6c |sprintf(|msg, "%l|
|00005510| 64 5c 72 20 20 20 2a 2a | 2a 20 75 6e 75 73 65 64 |d\r **|* unused|
|00005520| 20 2a 2a 2a 5c 72 22 2c | 20 69 29 3b 0d 09 09 09 | ***\r",| i);....|
|00005530| 6c 65 6e 20 3d 20 73 74 | 72 6c 65 6e 28 6d 73 67 |len = st|rlen(msg|
|00005540| 29 3b 0d 09 09 09 4d 79 | 46 53 57 72 69 74 65 4e |);....My|FSWriteN|
|00005550| 6f 43 61 63 68 65 28 72 | 65 66 4e 75 6d 2c 20 26 |oCache(r|efNum, &|
|00005560| 6c 65 6e 2c 20 6d 73 67 | 2c 20 6e 69 6c 29 3b 0d |len, msg|, nil);.|
|00005570| 09 09 7d 0d 09 7d 0d 09 | 0d 09 4d 79 48 53 65 74 |..}..}..|..MyHSet|
|00005580| 53 74 61 74 65 28 67 41 | 72 74 69 63 6c 65 49 6e |State(gA|rticleIn|
|00005590| 66 6f 2c 20 73 74 61 74 | 65 31 29 3b 0d 09 4d 79 |fo, stat|e1);..My|
|000055a0| 48 53 65 74 53 74 61 74 | 65 28 67 47 72 6f 75 70 |HSetStat|e(gGroup|
|000055b0| 49 6e 66 6f 2c 20 73 74 | 61 74 65 32 29 3b 0d 09 |Info, st|ate2);..|
|000055c0| 4d 79 48 53 65 74 53 74 | 61 74 65 28 67 53 74 72 |MyHSetSt|ate(gStr|
|000055d0| 69 6e 67 73 2c 20 73 74 | 61 74 65 33 29 3b 0d 09 |ings, st|ate3);..|
|000055e0| 0d 09 4d 79 46 53 43 6c | 6f 73 65 28 72 65 66 4e |..MyFSCl|ose(refN|
|000055f0| 75 6d 2c 20 6e 69 6c 29 | 3b 0d 09 72 65 74 75 72 |um, nil)|;..retur|
|00005600| 6e 20 6e 6f 45 72 72 3b | 0d 09 0d 65 78 69 74 3a |n noErr;|...exit:|
|00005610| 0d 09 0d 09 69 66 20 28 | 72 65 66 4e 75 6d 20 21 |....if (|refNum !|
|00005620| 3d 20 30 29 20 4d 79 46 | 53 43 6c 6f 73 65 28 72 |= 0) MyF|SClose(r|
|00005630| 65 66 4e 75 6d 2c 20 6e | 69 6c 29 3b 0d 09 4d 79 |efNum, n|il);..My|
|00005640| 48 53 65 74 53 74 61 74 | 65 28 67 41 72 74 69 63 |HSetStat|e(gArtic|
|00005650| 6c 65 49 6e 66 6f 2c 20 | 73 74 61 74 65 31 29 3b |leInfo, |state1);|
|00005660| 0d 09 4d 79 48 53 65 74 | 53 74 61 74 65 28 67 47 |..MyHSet|State(gG|
|00005670| 72 6f 75 70 49 6e 66 6f | 2c 20 73 74 61 74 65 32 |roupInfo|, state2|
|00005680| 29 3b 0d 09 4d 79 48 53 | 65 74 53 74 61 74 65 28 |);..MyHS|etState(|
|00005690| 67 53 74 72 69 6e 67 73 | 2c 20 73 74 61 74 65 33 |gStrings|, state3|
|000056a0| 29 3b 0d 09 72 65 74 75 | 72 6e 20 65 72 72 3b 0d |);..retu|rn err;.|
|000056b0| 7d 0d 0d 23 65 6e 64 69 | 66 20 0d 0d 0d 0d 2f 2a |}..#endi|f ..../*|
|000056c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005700| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 09 44 69 |--------|----..Di|
|00005710| 73 70 6c 61 79 41 72 74 | 69 63 6c 65 43 61 63 68 |splayArt|icleCach|
|00005720| 65 20 0d 09 0d 09 44 69 | 73 70 6c 61 79 20 74 68 |e ....Di|splay th|
|00005730| 65 20 63 61 63 68 65 20 | 69 6e 20 61 20 74 65 78 |e cache |in a tex|
|00005740| 74 20 77 69 6e 64 6f 77 | 20 69 6e 20 68 75 6d 61 |t window| in huma|
|00005750| 6e 20 72 65 61 64 61 62 | 6c 65 20 66 6f 72 6d 61 |n readab|le forma|
|00005760| 74 20 28 64 65 76 65 6c | 6f 70 6d 65 6e 74 0d 09 |t (devel|opment..|
|00005770| 76 65 72 73 69 6f 6e 20 | 6f 6e 6c 79 29 2e 0d 09 |version |only)...|
|00005780| 0d 09 45 78 69 74 3a 09 | 66 75 6e 63 74 69 6f 6e |..Exit:.|function|
|00005790| 20 72 65 73 75 6c 74 20 | 3d 20 65 72 72 6f 72 20 | result |= error |
|000057a0| 63 6f 64 65 2e 0d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |code..--|--------|
|000057b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000057c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000057d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000057e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000057f0| 2d 2d 2a 2f 0d 0d 23 69 | 66 64 65 66 20 6b 44 65 |--*/..#i|fdef kDe|
|00005800| 76 65 6c 6f 70 6d 65 6e | 74 56 65 72 73 69 6f 6e |velopmen|tVersion|
|00005810| 0d 0d 4f 53 45 72 72 20 | 44 69 73 70 6c 61 79 41 |..OSErr |DisplayA|
|00005820| 72 74 69 63 6c 65 43 61 | 63 68 65 20 28 76 6f 69 |rticleCa|che (voi|
|00005830| 64 29 0d 7b 0d 09 46 53 | 53 70 65 63 20 66 53 70 |d).{..FS|Spec fSp|
|00005840| 65 63 3b 0d 09 4f 53 45 | 72 72 20 65 72 72 20 3d |ec;..OSE|rr err =|
|00005850| 20 6e 6f 45 72 72 3b 0d | 09 48 61 6e 64 6c 65 20 | noErr;.|.Handle |
|00005860| 74 65 78 74 20 3d 20 6e | 69 6c 3b 0d 09 73 68 6f |text = n|il;..sho|
|00005870| 72 74 20 72 65 66 4e 75 | 6d 20 3d 20 30 3b 0d 09 |rt refNu|m = 0;..|
|00005880| 6c 6f 6e 67 20 6c 65 6e | 3b 0d 09 57 69 6e 64 6f |long len|;..Windo|
|00005890| 77 50 74 72 20 77 69 6e | 64 3b 0d 0d 09 65 72 72 |wPtr win|d;...err|
|000058a0| 20 3d 20 43 72 65 61 74 | 65 54 65 6d 70 6f 72 61 | = Creat|eTempora|
|000058b0| 72 79 46 69 6c 65 28 26 | 66 53 70 65 63 2c 20 6b |ryFile(&|fSpec, k|
|000058c0| 4e 65 77 73 57 61 74 63 | 68 65 72 53 69 67 6e 61 |NewsWatc|herSigna|
|000058d0| 74 75 72 65 2c 20 27 74 | 74 78 74 27 2c 20 27 54 |ture, 't|txt', 'T|
|000058e0| 45 58 54 27 29 3b 0d 09 | 69 66 20 28 65 72 72 20 |EXT');..|if (err |
|000058f0| 21 3d 20 6e 6f 45 72 72 | 29 20 67 6f 74 6f 20 65 |!= noErr|) goto e|
|00005900| 78 69 74 3b 0d 09 65 72 | 72 20 3d 20 44 75 6d 70 |xit;..er|r = Dump|
|00005910| 41 72 74 69 63 6c 65 43 | 61 63 68 65 54 6f 46 69 |ArticleC|acheToFi|
|00005920| 6c 65 28 26 66 53 70 65 | 63 29 3b 0d 09 69 66 20 |le(&fSpe|c);..if |
|00005930| 28 65 72 72 20 21 3d 20 | 6e 6f 45 72 72 29 20 67 |(err != |noErr) g|
|00005940| 6f 74 6f 20 65 78 69 74 | 3b 0d 09 65 72 72 20 3d |oto exit|;..err =|
|00005950| 20 46 53 70 4f 70 65 6e | 44 46 28 26 66 53 70 65 | FSpOpen|DF(&fSpe|
|00005960| 63 2c 20 66 73 52 64 50 | 65 72 6d 2c 20 26 72 65 |c, fsRdP|erm, &re|
|00005970| 66 4e 75 6d 29 3b 0d 09 | 69 66 20 28 65 72 72 20 |fNum);..|if (err |
|00005980| 21 3d 20 6e 6f 45 72 72 | 29 20 67 6f 74 6f 20 65 |!= noErr|) goto e|
|00005990| 78 69 74 3b 0d 09 65 72 | 72 20 3d 20 4d 79 4e 65 |xit;..er|r = MyNe|
|000059a0| 77 48 61 6e 64 6c 65 28 | 30 78 37 66 66 66 2c 20 |wHandle(|0x7fff, |
|000059b0| 26 74 65 78 74 29 3b 0d | 09 69 66 20 28 65 72 72 |&text);.|.if (err|
|000059c0| 20 21 3d 20 6e 6f 45 72 | 72 29 20 67 6f 74 6f 20 | != noEr|r) goto |
|000059d0| 65 78 69 74 3b 0d 09 6c | 65 6e 20 3d 20 30 78 37 |exit;..l|en = 0x7|
|000059e0| 66 66 66 3b 0d 09 4d 79 | 48 4c 6f 63 6b 28 74 65 |fff;..My|HLock(te|
|000059f0| 78 74 29 3b 0d 09 65 72 | 72 20 3d 20 46 53 52 65 |xt);..er|r = FSRe|
|00005a00| 61 64 28 72 65 66 4e 75 | 6d 2c 20 26 6c 65 6e 2c |ad(refNu|m, &len,|
|00005a10| 20 2a 74 65 78 74 29 3b | 0d 09 4d 79 48 55 6e 6c | *text);|..MyHUnl|
|00005a20| 6f 63 6b 28 74 65 78 74 | 29 3b 0d 09 4d 79 53 65 |ock(text|);..MySe|
|00005a30| 74 48 61 6e 64 6c 65 53 | 69 7a 65 28 74 65 78 74 |tHandleS|ize(text|
|00005a40| 2c 20 6c 65 6e 29 3b 0d | 09 4d 79 46 53 43 6c 6f |, len);.|.MyFSClo|
|00005a50| 73 65 28 72 65 66 4e 75 | 6d 2c 20 6e 69 6c 29 3b |se(refNu|m, nil);|
|00005a60| 0d 09 65 72 72 20 3d 20 | 4d 61 6b 65 4e 65 77 54 |..err = |MakeNewT|
|00005a70| 65 78 74 57 69 6e 64 6f | 77 28 22 5c 70 41 72 74 |extWindo|w("\pArt|
|00005a80| 69 63 6c 65 20 43 61 63 | 68 65 22 2c 20 30 2c 20 |icle Cac|he", 0, |
|00005a90| 6e 69 6c 2c 20 74 65 78 | 74 2c 20 26 77 69 6e 64 |nil, tex|t, &wind|
|00005aa0| 29 3b 0d 09 69 66 20 28 | 65 72 72 20 21 3d 20 6e |);..if (|err != n|
|00005ab0| 6f 45 72 72 29 20 67 6f | 74 6f 20 65 78 69 74 3b |oErr) go|to exit;|
|00005ac0| 0d 09 4d 79 44 69 73 70 | 6f 73 65 48 61 6e 64 6c |..MyDisp|oseHandl|
|00005ad0| 65 28 74 65 78 74 29 3b | 0d 09 72 65 74 75 72 6e |e(text);|..return|
|00005ae0| 20 6e 6f 45 72 72 3b 0d | 09 0d 65 78 69 74 3a 0d | noErr;.|..exit:.|
|00005af0| 0d 09 69 66 20 28 72 65 | 66 4e 75 6d 20 21 3d 20 |..if (re|fNum != |
|00005b00| 30 29 20 4d 79 46 53 43 | 6c 6f 73 65 28 72 65 66 |0) MyFSC|lose(ref|
|00005b10| 4e 75 6d 2c 20 6e 69 6c | 29 3b 0d 09 4d 79 44 69 |Num, nil|);..MyDi|
|00005b20| 73 70 6f 73 65 48 61 6e | 64 6c 65 28 74 65 78 74 |sposeHan|dle(text|
|00005b30| 29 3b 0d 09 72 65 74 75 | 72 6e 20 65 72 72 3b 0d |);..retu|rn err;.|
|00005b40| 7d 0d 0d 23 65 6e 64 69 | 66 00 00 00 00 00 00 00 |}..#endi|f.......|
|00005b50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005b80| 00 00 01 00 00 00 01 54 | 00 00 00 54 00 00 00 46 |.......T|...T...F|
|00005b90| 00 00 00 00 00 01 00 10 | 01 00 00 00 0a 76 67 45 |........|.....vgE|
|00005ba0| 72 72 00 6c 00 01 00 14 | 01 00 00 00 0a a7 67 43 |rr.l....|......gC|
|00005bb0| 07 63 61 63 68 65 2e 63 | 02 00 00 00 54 45 58 54 |.cache.c|....TEXT|
|00005bc0| 4d 4d 43 43 01 00 ff ff | ff ff 00 00 00 00 12 88 |MMCC....|........|
|00005bd0| 00 00 54 45 58 54 4d 4d | 43 43 01 00 ff ff ff ff |..TEXTMM|CC......|
|00005be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005bf0| 00 00 aa 4f 89 98 00 00 | 5a c9 00 00 01 9a 12 5d |...O....|Z......]|
|00005c00| 46 74 70 43 6c 6f 73 65 | 00 1a 00 01 00 1a 00 01 |FtpClose|........|
|00005c10| 00 00 14 bd 46 74 70 47 | 65 74 54 65 78 74 46 69 |....FtpG|etTextFi|
|00005c20| 6c 65 00 18 00 01 00 1a | 00 01 00 00 1d dd 46 74 |le......|......Ft|
|00005c30| 70 53 65 6e 64 54 65 78 | 74 46 69 6c 65 00 00 01 |pSendTex|tFile...|
|00005c40| 00 1e 00 01 00 00 25 a7 | 46 74 70 47 65 74 53 65 |......%.|FtpGetSe|
|00005c50| 72 76 65 72 45 72 72 49 | 6e 66 6f 00 00 01 00 16 |rverErrI|nfo.....|
|00005c60| 00 01 00 00 27 26 46 74 | 70 47 65 74 4f 53 45 72 |....'&Ft|pGetOSEr|
|00005c70| 72 00 00 00 fe ed be ad | 00 00 00 00 00 00 37 d4 |r.......|......7.|
|00005c80| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 00 |...H..Mo|naco....|
|00005c90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005ca0| 00 00 00 00 00 00 00 03 | 00 04 00 56 00 04 01 dc |........|...V....|
|00005cb0| 02 7c 00 56 00 04 01 dc | 02 7c ab e4 db ea 00 00 |.|.V....|.|......|
|00005cc0| 00 00 00 00 00 00 00 00 | 57 c4 01 00 00 00 00 04 |........|W.......|
|00005cd0| 00 01 00 01 00 00 01 00 | 00 00 01 54 00 00 00 54 |........|...T...T|
|00005ce0| 00 00 00 46 01 c2 0c 98 | 15 ac 00 00 00 1c 00 46 |...F....|.......F|
|00005cf0| 00 01 4d 50 53 52 00 00 | 00 12 4d 57 42 42 00 00 |..MPSR..|..MWBB..|
|00005d00| 00 1e 03 ed ff ff 00 00 | 00 00 00 00 00 00 03 f0 |........|........|
|00005d10| ff ff 00 00 00 4c 00 00 | 00 00 00 00 00 00 00 00 |.....L..|........|
|00005d20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005d30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005d40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005d50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005d60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005d70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+